我有一个 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> |
此页面返回的一些单词具有以下格式,并且以这种方式返回:
字1 字2
词'
词+
字(-)
但它们在 href=editor.php?entry=$escaped 部分没有正确发送,实际上只有以撇号结尾的可以,因为我使用的是“mysql_real_escape_string”函数,我尝试将其他转换为转义字符,但它不起作用,例如 ("+", "+", $row['entry'])。 这些是我在所有这些情况下看到的链接:
2 个单词 = editor.php?entry=word1 (没有后面的空格或 word2,这会返回与 word1 匹配的所有单词(如果有的话),但不是 word1 word2 的复合词)。
word' = editor.php?entry=word\' (由于该功能,这是正确的,并且它也返回了正确的单词)。
word+ = editor.php?entry=word+ (+ 应该被转义,因为如果我单击生成的链接,它不会给我任何结果,空白页)。
word (-) = editor.php?entry=word (这类似于2个单词的情况,除了它有括号也应该转义之外,这也会产生空白页)。
我一直在寻找,只能找到修复撇号的方法,我不知道如何修复其余的情况,任何帮助都是有值(value)的。
非常感谢。
最佳答案
您需要对数据进行 URL 编码,以便输出到 HTML href 属性中。
$query_string = urlencode($row['entry']);
echo "<a href=editor.php?entry=$query_string".$row['entry']."</a> |
mysql_real_escape_string
函数用于转义数据以用于 MySQL 查询,而不是用于查询结果。
关于php - 从 php 的 mysql 查询中转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21533187/