[英]Why does my PDO query fail?
使用WampServer和phpMyAdmin。
这是代码:
function createRecord(){
$id=null;
var_dump("ID: ",$id);
$length=0;
$dbh=$this->dbConnect();
var_dump("DBH: ", $dbh);
$dbh->beginTransaction();
//try{
var_dump("DBH: ", $dbh);
//$dbh->beginTransaction();
$insertInSets=$dbh->prepare("INSERT INTO 'sets' () VALUES ()"); // PDO Statement object. ID is generated via autoincrement.
var_dump("InsertInSets: ", $insertInSets);
$id=$dbh->lastInsertId();
var_dump("ID: ",$id);
$insertInClosures=$dbh->prepare("INSERT INTO 'closures' (ancestor,descendant,length) VALUES (:ancestor,:descendant,:length)");
var_dump("InsertInClosures: ", $insertInClosures);
$insertInClosures->bindParam(":ancestor", $id); //<- This is line 22
$insertInClosures->bindParam(":descendant", $id);
$insertInClosures->bindParam(":length", $length);
//$dbh->commit();
exit;
无论有没有try
和交易,我都试过了。 无论如何,我得到以下内容:
Fatal error: Call to a member function bindParam() on a non-object in C:\\wamp\\www\\Projetv0.2\\Class_SetDAO.php on line 22
var_dumps的输出如下:
string 'ID: ' (length=4)
null
string 'DBH: ' (length=5)
object(PDO)[8]
string 'DBH: ' (length=5)
object(PDO)[8]
string 'InsertInSets: ' (length=14)
boolean false
string 'ID: ' (length=4)
string '0' (length=1)
string 'InsertInClosures: ' (length=18)
boolean false
为什么查询不起作用....
'sets'
未被解析为表名; SQL认为它是一个字符串。
如果您使用的是MySQL,请尝试将撇号切换为反引号。 其他系统可能使用(ANSI标准)双引号。
或者,完全摆脱报价。 sets
不是我曾经使用的任何SQL风格的关键字,所以如果你使用任何这些风格,你根本不必引用它。
列和表名应封装在(`)中
INSERT INTO `sets` () VALUES ()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.