这可能是与别人不一样的原因
缘由
今天在调试php代码,其中需要用到pdo调取mysql数据库数据出现了题目所示的错误,但是,其一我之前用此方法能调取成功,其二我上网查了一些原因,都没有解决我的问题。
解决过程
原来代码
$keys = $PDO->query("SELECT key FROM `t_paper_1`")->fetchAll(PDO::FETCH_ASSOC);
var_dump($keys);
其他能正常获取数据的代码
$xms = $PDO->query("SELECT xm FROM xsinfo WHERE bjid='1'")->fetchAll(PDO::FETCH_ASSOC);
var_dump($xms);
反复对比,突然感觉key这个好像在哪里用到过,经过查找自己的代码,发现了如下
CREATE TABLE `t_paper` (
`id` mediumint(8) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`type` mediumint(1) NOT NULL,
`code` text,
PRIMARY KEY (`id`),
KEY `type` (`type`)
);
在这里有一个KEY,说明这个key是mysql的保留字,也就是我直接那样查询,与mysql的保留字冲突。于修改代码如下:
$keys = $PDO->query("SELECT `key` FROM `t_paper_1`")->fetchAll(PDO::FETCH_ASSOC);
var_dump($keys);
这次正常运行了,与上面的分析符合。
总结
以后注意两点:
- 不用系统保留字。
- 习惯性表名及字段名加上``标志符(键盘数字左上角1旁边那个).