php - 从 php 的 mysql 查询中转义字符

标签 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> |

此页面返回的一些单词具有以下格式,并且以这种方式返回:
字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/

相关文章:

c# - 如何在 C# 或 SQL Server 中找到邮政编码之间的距离?

php - 在 PhP 中从 MySql 检索和显示数据

php - 使用 PHP 将 HTML 日期输入到 SQL

mysql - 如果我更新一个 SQL 表方案。我是否必须更新所有用户数据库链接表?

php - MySQL数据库目标机主动拒绝连接

mysql - SQL USE INDEX 语法错误

php - 不推荐将编码作为第三个参数传递。使用显式零偏移

php - 仅使用 PHP/HTML/Javascript 将 'value' 从多个单选类型选择添加到 mySQL 中的特定行/列

php - 空白/空搜索表单字段

java - 如何在Java中捕获同时执行多个查询的响应时间?