我正在尝试下面的代码插入数据到我的Mysql表
$pdo = new PDO('odbc:MYSQL', 'user', 'pass');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->query('use mydb');
$query=$pdo->query("CREATE TABLE MEMBERS (ID INT PRIMARY KEY, NAME NVARCHAR(20), DESCRIPTION NVARCHAR(20))");
try {
$query=$pdo->prepare('INSERT INTO MEMBERS (ID, NAME,DESCRIPTION) VALUES(?,?,?)',array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$query->execute(array(9,'JOHN DOE', 'IT'));
}catch ('Exception $e) {
var_dump($e);
}
然后我得到这个错误:
[MySQL][ODBC 5.1 Driver][mysqld-5.5.43-0ubuntu0.14.04.1-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 1 (SQLExecute[1064] at /build/php5-RpYHCf/php5-5.5.9+dfsg/ext/pdo_odbc/odbc_stmt.c:254)'
我可以看到Mysql日志文件中的查询:
INSERT INTO MEMBERS (ID, NAME,DESCRIPTION) VALUES(, , )
因此,execute函数无法从数组中填充值。
注意:我已经尝试VALUES(:ID,:NAME,:DESCRIPTION)没有工作。此外,我尝试在bindParam()之后执行,这也不起作用。
我做错了什么吗?
我做错了什么吗?
是的。
由于某些原因,您正在使用ODBC连接mysql数据库,这使您成为尝试过这种不寻常的技术耦合的极少数人之一。
让我建议你使用标准的mysql驱动程序。我相信不会有丝毫的问题与非常相同的查询