为什么这个PDO插入不起作用?

时间:2011-05-10 03:49:34

标签: php pdo

请帮助,这不是插入db

$dbh = new PDO('mysql:host=localhost;dbname=blog', root, root);

if($dbh){

// use the connection here

$stmt = $dbh->prepare("INSERT INTO comments (blog_id,dateposted,name,comment) VALUES (:blog_id,:dateposted,:name,:comment)");
$stmt->bindParam(':blog_id', $validentry);
$stmt->bindParam(':dateposted', NOW());
$stmt->bindParam(':name', $_POST['name']);
$stmt->bindParam(':comment', $_POST['comment']);
$stmt->execute();

// and now we're done; close it

}else{
    echo mysql_error();
}

$dbh = null;
//redirect after posting

3 个答案:

答案 0 :(得分:3)

  

$ stmt-> bindParam(':dateposted',NOW());

PDOStatement::bindParam()将参数绑定到PHP变量引用。因此,它要求第二个参数是变量。

您可以使用PDOStatement::bindValue()来使用函数的文字或返回值。

此外,NOW()不是PHP函数,因此不能在此处使用。如果您只是想使用数据库功能,请将其硬编码到语句中,例如

INSERT INTO comments (blog_id,dateposted,name,comment)
VALUES (:blog_id, NOW(), :name, :comment)

答案 1 :(得分:0)

NOW()更改为date('Y-m-d H:i:s')

答案 2 :(得分:0)

菲尔,好的,但是如果你需要bindParam根据条件分配一个值?

就我而言,我想让用户根据需要定义创建日期。

    $stmt = $conn->prepare('INSERT INTO news (title_fr, content_fr, creation_date) VALUES (:title_fr, :content_fr, :creation_date)');

if( $date ) {
    $stmt->bindParam(':creation_date', $date);
} else {
    $stmt->bindParam(':creation_date', NOW());
}