非常奇怪的数据库插入/选择phpmyadmin

时间:2013-02-18 04:36:43

标签: php mysql select insert phpmyadmin

我正在使用CodeIgniter和我自己的PDO语句(硬编码)。当我尝试单击作为另一个表的外键的id时,我在phpmyadmin中收到错误。 如果在Phpmyadmin中使用外键,则外键将显示为该表的超链接

这是一个例子:error

然而,当我进入命令行时,我得到了这个:

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:

Test

当您点击phpmyadmin中的超链接时,将会有一个自动生成的select语句:

Testing11

2 个答案:

答案 0 :(得分:2)

必须是编码问题。 0x27是单引号字符('

的ASCII十六进制值

或者您的PDO是否以单引号的方式编码?

答案 1 :(得分:0)

您必须绑定引号中的值,因为varchar字段的值应始终用引号括起来。

所以查询将是

SELECT * FROM `citest`.`student`

WHERE `anum` = '_27A00000000_27'

Limit 0,30

感谢。