我正在使用CodeIgniter和我自己的PDO语句(硬编码)。当我尝试单击作为另一个表的外键的id时,我在phpmyadmin中收到错误。 如果在Phpmyadmin中使用外键,则外键将显示为该表的超链接
这是一个例子:
然而,当我进入命令行时,我得到了这个:
mysql> select * from session WHERE anum = 'A00163047';
+------------+-----------+------+---------+---------------------+-----------------+--------+
| session_id | anum | why | aidyear | signintime | studentcomments | status |
+------------+-----------+------+---------+---------------------+-----------------+--------+
| 184 | A00163047 | 4 | 14-15 | 2013-02-17 23:21:47 | | 0 |
+------------+-----------+------+---------+---------------------+-----------------+--------+
1 row in set (0.00 sec)
另外需要注意的是,它们是不同的Id,但仍然存在错误。
似乎添加anum ='whatever id'似乎返回一个查询。在检索要放入表格的数据时,我应该担心吗?
我尝试用XSS on和off(全局)复制这个,我尝试了form_validation的每个不同的可行组合,但仍然得到相同的错误。为什么会这样?这让我担心我的数据在某些地方被破坏了。
编辑1:
根据回答人们认为实际值是_27A0000000_27
这不是的情况。当我点击phpmyadmin超链接_27(无论如何)_27正在添加给我一个错误。我知道如何选择
例如:select * from whatever WHERE anum = 'Whatever';
编辑2:
当您点击phpmyadmin中的超链接时,将会有一个自动生成的select语句:
答案 0 :(得分:2)
必须是编码问题。 0x27是单引号字符('
)
或者您的PDO是否以单引号的方式编码?
答案 1 :(得分:0)
您必须绑定引号中的值,因为varchar字段的值应始终用引号括起来。
所以查询将是
SELECT * FROM `citest`.`student`
WHERE `anum` = '_27A00000000_27'
Limit 0,30
感谢。