我在升级我的一个应用程序时遇到了奇怪的问题
- 脚本语言为PHP
- 数据库是MYSQL
- 我使用 PDO 类来处理
我有一个简单的用户更新模块,它包含 4 个不同的字段并且工作得很好,今天我决定添加更新用户组的功能,并且查询执行从那时起就失败了。
在数据库中 - 用户表有以下字段:
- 用户名 (varchar 50)
- 密码(varchar 64)
- 电子邮件(varchar 128)
- 名称(可变字符 50)
- 组(int 1)
- 活跃(int 1)
我在更新时执行的查询,在升级之前是这样的:
UPDATE users SET username = ?, email = ?, name = ?, active = ? WHERE id = 1
Array
(
[username] => john
[email] => john.doe@gmail.com
[name] => John Doe
[active] => 1
)
它工作得很好,现在我正在执行的查询是这样的:
UPDATE users SET username = ?, email = ?, name = ?, group = ?, active = ? WHERE id = 1
Array
(
[username] => john
[email] => john.doe@gmail.com
[name] => John Doe
[group] => 2
[active] => 1
)
这个不起作用,但是如果我确实检查了错误信息,它会返回数组:
Array
(
[0] => 00000
[0] =>
[0] =>
)
所以我试着用这种方式只更新没有其他字段的组:
UPDATE users SET group = ? WHERE id = 1
Array
(
[group] => 2
)
也失败了,这很奇怪,因为如果我将它复制到 phpmyadmin sql runer 中,它就会正确执行。
执行的代码是这样的:
if($this->_query = $this->_pdo->prepare($sql)) {
if(count($params)) {
$x = 1;
foreach($params as $param) {
$this->_query->bindValue($x, $param);
$x++;
}
}
if($this->_query->execute()) {
$this->_insertid = $this->_pdo->lastInsertId();
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_count = $this->_query->rowCount();
} else {
$this->_error = true;
}
}
再次一切正常,除非我尝试更新组,然后才失败,我不明白也许有人这样做,感谢所有提示:)
顺便说一句,当我 INSERT
而不是 UPDATE
时,它被正确执行,只有 Update 有一些问题
最佳答案
Group是MySQL中的保留字 http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
不知道您的代码中是否还有其他问题,但请尝试在 [reserved] 字周围使用 ``
:
`group`
关于php - Mysql PDO,查询执行失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24826412/