PDOStatement执行不使用Mysql-ODBC填充值


PDOStatement execute doesn't fill values with Mysql-ODBC

我正在尝试下面的代码插入数据到我的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驱动程序。我相信不会有丝毫的问题与非常相同的查询