2012-08-23 101 views
0

这个PDO插入语句没有任何理由在MySQL中插入吗?PDO语句没有插入

$stmt = $dbh->prepare("INSERT INTO training courseId = :postCourse, title = :postCourseName, startDate = :postStartDate, endDate = :postEndDate"); 
$stmt->bindParam(':postCourse', $postCourse); 
$stmt->bindParam(':postCourseName', $postCourseName); 
$stmt->bindParam(':postStartDate', $postStartDate); 
$stmt->bindParam(':postEndDate', $postEndDate); 
$stmt->execute(); 

我没有得到任何错误。一切对我来说都是正确的。

+1

错误的SQL INSERT语法。它应该是这样的:'INSERT INTO tbl(col1,col2,...)VALUES(:val1,:val2 ...)' – bfavaretto

+0

@bfavaretto不正确,是,错,可疑...... http:// dev .mysql.com/doc/refman/5.5/en/insert.html –

回答

4

您的查询应该是:

INSERT INTO training (courseId, title, startDate, endDate) VALUES 
(:postCourse, :postCourseName, :postStartDate, :postEndDate); 

或者:

INSERT INTO training 
SET courseId = :postCourse, 
    title = :postCourseName, 
    startDate = :postStartDate, 
    endDate = :postEndDate 

http://dev.mysql.com/doc/refman/5.5/en/insert.html

您应该能够检查错误是这样的:

$stmt = $dbh->prepare(...); 
if (!$stmt) { 
    var_dump($dbh->errorInfo()); 
} 

或者:

$stmt->execute(); 
var_dump($stmt->errorInfo()); 

或者:

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
... 

参见:http://www.php.net/manual/en/pdo.error-handling.php

+0

糟糕!谢谢,那就是诀窍! –

4

是的,你错过了SET

$stmt = $dbh->prepare("INSERT INTO training SET courseId = :postCourse, title = :postCourseName, startDate = :postStartDate, endDate = :postEndDate"); 
+0

(抱歉,彼得,我错了,评论和downvote删除) – bfavaretto