【发布时间】:2012-05-09 02:45:13
【问题描述】:
我有一个表格,当您选择文章下拉列表时,文本框会填入您选择的内容。现在它工作得非常好,除非文章名称中有“单引号”。
我有一个通过在引号前面放置反斜杠来转义引号的功能,它确实......
现在产生的查询如下:_
SELECT * FROM blogs WHERE title='MySQL \'Inject' AND series='iOS Game Dev.' AND language='iOS' LIMIT 1
我有一个函数可以创建文章的对象并根据所选行设置所有内容的值。当我显示由运行查询的函数创建的数组时,它给出了这个..
Blog Object
(
[id] =>
[title] =>
[publish_date] =>
[author] =>
[language] =>
[series] =>
[likes] =>
[content] =>
[position] =>
[status] =>
[last_updated] =>
)
如果文章名称中没有单引号,它可以工作,但它不会填充文本框,因为数组是空的。
更多存储在数据库中的值是 MySQL \'Inject 。所以我真的不明白它为什么这样做,我什至尝试在 MySQL Workbench 中运行查询,但它什么也没返回。所以我很确定这在我的代码中不是问题。
【问题讨论】:
-
不要使用
=,而是给LIKE一个机会:WHERE title LIKE '%MySQL \'Inject%' -
@juergend 这将使撇号完全消失,如果我想在标题中加上单引号怎么办?
-
@JahanzebKhan:不,它还在那里。看到这个Example
-
嗯....你能告诉我一件事吗?我是否应该像那样插入数据库,这意味着不是在数据库中的引号之前插入 \,而是使用 str replace 将 ' 替换为 '' 而不是使用 mysql_real_escape_string?当我选择它时,只需正常选择它?
标签: php mysql forms mysql-workbench