首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP PDO MySQL插入错误,但可以作为对MySQL的直接查询

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

Stack Overflow用户
提问于 2012-06-01 22:53:18
回答 2查看 334关注 0票数 0

我正在使用PDO让我的安卓应用程序与MySQL数据库对话。

下面是我的PHP文件:

代码语言:javascript
复制
<?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中执行以下查询:

代码语言:javascript
复制
INSERT INTO `k_user_groep`(`group`, `user`, `rol`) VALUES ('1', 'test', 'v');

这是我对PHP文件的调用:

代码语言:javascript
复制
x.php?groupid=1&user=test&rol=v

它返回以下内容:

代码语言:javascript
复制
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

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-01 22:55:30

group is a reserved word in mySQL.

它在您的第二个示例中是有效的,因为您用反引号将列名括起来。

票数 3
EN

Stack Overflow用户

发布于 2012-06-01 22:55:50

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10852574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档