0

我将 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 的情况下(全局)复制它,我尝试了 form_validation 的每一种不同的可行组合,但我仍然得到相同的错误。为什么会这样?这让我担心我的数据在某些地方被损坏了。

编辑 1:

根据人们认为实际值为_27A0000000_27

事实并非如此。当我点击 phpmyadmin 超链接 _27(whatever)_27 被添加给我一个错误。我知道如何选择

例如:select * from whatever WHERE anum = 'Whatever';

编辑 2:

测试

当您在 phpmyadmin 中点击超链接时,将自动生成一个 select 语句,如下所示:

测试11

4

2 回答 2

2

一定是编码问题。0x27 是单引号字符 ( ')的 ASCII 十六进制值

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

于 2013-02-18T06:48:06.380 回答
0

您必须绑定引号中的值,因为 varchar 字段的值应始终包含在引号中。

所以查询将是

SELECT * FROM `citest`.`student`

WHERE `anum` = '_27A00000000_27'

Limit 0,30

谢谢。

于 2013-02-18T04:40:54.067 回答