从php的mysql查询中转义字符

时间:2014-02-03 17:02:31

标签: php mysql sql escaping special-characters

我有一个php页面,可以从像这样的mysql表中显示信息

$query = "SELECT * FROM `diccionary` WHERE `entry` LIKE 'a%' ORDER BY `entry`";

并且我将每个结果用作第二个查询到另一个php文件的输入:

$escaped = mysql_real_escape_string($row['entry']);
echo "<a href=editor.php?entry=$escaped>".$row['entry']."</a> |

在此页面返回的一些单词具有下一种格式,它们以这种方式返回:
word1 word2
单词“
字+
字( - )

但它们没有正确发送到href = editor.php?entry = $转义部分,实际上只有以撇号结尾的那些是好的,因为我正在使用“mysql_real_escape_string”函数,我尝试将其他转换为转义字符,但它不起作用,如(“+”,“+”,$ row ['entry'])。 这些是我在所有这些情况下看到的链接:

2 words = editor.php?entry = word1(没有以下空格也没有word2,这给了我所有与word1匹配的单词,如果有的话,但不是word1 word2的复合词。)

单词'= editor.php?entry = word \'(由于该功能,这是正确的,它也给了我正确的单词)。

word + = editor.php?entry = word +(+应该被转义,因为如果我点击生成的链接,它就没有结果,空白页面。)

word( - )= editor.php?entry = word(这类似于2个单词的情况,除此之外还有应该转义的括号,这个也会产生空白页。)

我一直在寻找周围,我只能找到修复撇号的方法,我不知道如何修复其余的情况,任何帮助都是有价值的。

非常感谢。

2 个答案:

答案 0 :(得分:1)

您需要对数据进行URL编码,以便输出到HTML href属性。

$query_string = urlencode($row['entry']);
echo "<a href=editor.php?entry=$query_string".$row['entry']."</a> |

mysql_real_escape_string函数用于转义数据,以便在MySQL查询中使用,而不是用于查询结果。

答案 1 :(得分:0)

try urlencode($row['entry']);方法http://in1.php.net/urlencode可能会起作用 但是在网址中发送转发数据的建议并不是一个好习惯。