PHP PDO MySQL插入错误,但作为MySQL的直接查询

时间:2012-06-01 14:53:18

标签: php mysql pdo

我使用PHP PDO让我的Android应用程序与MySQL数据库通信。

这是我的PHP文件:

<?php
$pdo = new PDO("mysql:host=x;dbname=x", "x", "x");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "INSERT INTO k_user_groep(group, user, rol) VALUES (?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($_GET['groupid'], $_GET['user'], $_GET['rol']));
?>

该表的设计如下: groupid引用其他表中的唯一索引, 用户引用其他表中的主键, rol引用没有。

直接在MySQL中,以下查询有效:

INSERT INTO `k_user_groep`(`group`, `user`, `rol`) VALUES ('1', 'test', 'v');

这是我对PHP文件的调用:

x.php?groupid=1&user=test&rol=v

返回以下内容:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 'group, user, rol) VALUES ('1', 'test', 'v')' at line 1' in x.php:7 Stack trace: #0 x.php(7): PDOStatement->execute(Array) #1 {main} thrown in x.php on line 7

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

group is a reserved word in mySQL.

它适用于您的第二个示例,因为您将列名称包装在反引号中。

答案 1 :(得分:0)

显然,您在PDO代码和MySQL客户端中尝试的查询不一样 - 您在客户端中引用了所有标识符,而PDO代码中没有引用任何标识符。