php - 在 PHP 中,如何创建包含引号和撇号的 mySQL 选择查询?

标签 php mysql escaping quoting

我使用 mysql_real_escape_string 毫无问题地将数据导入我的数据库。

因此数据库中的条目可能是:

1/4" Steve's lugnuts

所以这在数据库中是完美的。
现在我想搜索那个确切的东西。但是,它会在 "或 ' 处搞砸(我已经尝试了很多事情,但它总是在某个地方搞砸)。

这是我现在拥有的: (user_input 来自上一页的一个表单)

$user_input=mysql_real_escape_string($_REQUEST['user_input']);
$search_row=mysql_query("SELECT * FROM some_table WHERE some_column LIKE '%$user_input%' ");
while($search = mysql_fetch_array($search_row))
            {stuff happens}

echo "<form action='search_results.php' method='post'>";
echo "<input name='user_input' type='text' size='50' value='" . $user_input. "'>";
echo "<input type='submit' value='Lookup Parts' />";
echo "</form>";

但问题是,除了错误,我似乎什么也得不到。
搜索字段(应该填充他们已经输入的内容)只有:

1/4\" Steve\

我做错了什么?

最佳答案

The search field (which is supposed to populate with what they already put in) just has 1/4\" Steve\

当然有!
你放错了你的逃避。 mysql_real_escape_string 仅适用于 SQL!但您正在使用它的 html 结果。而对于 HTML,您必须使用完全不同的转义方式。

所以,做吧

$user_input=mysql_real_escape_string($_REQUEST['user_input']);
$search_row=mysql_query("SELECT * FROM some_table WHERE some_column LIKE '%$user_input%' ");
while($search = mysql_fetch_array($search_row))
            {stuff happens}


$user_input =htmlspecialchars($_REQUEST['user_input'],ENT_QUOTES); // here it goes

echo "<form action='search_results.php' method='post'>";
echo "<input name='user_input' type='text' size='50' value='$user_input'>";
echo "<input type='submit' value='Lookup Parts' />";
echo "</form>";

还请注意,回显如此大的 HTML block 是没有用的。只需关闭 PHP 标记,然后编写纯 HTML:

?>
<form action='search_results.php' method='post'>
<input name='user_input' type='text' size='50' value='<?=$user_input?>'>
<input type='submit' value='Lookup Parts' />
</form>

看起来更清晰、可读和方便

关于php - 在 PHP 中,如何创建包含引号和撇号的 mySQL 选择查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7518096/

相关文章:

php - MySql Select 命令返回 null

php - ImageMagick 留下临时文件 - 这是设计使然还是应该自动删除?

php mysqli 输入行号到交替列

MySQL select 查询中的 PHP foreach 语句

Php 脚本(作业)架构。 cron 是理想的解决方案吗?

mysql - 如何在一次查询或往返中对同一个表进行两次选择?

mysql - 将 'DATE' 值插入到 mysql 中

parsing - 当不可避免的字符被转义时该怎么办?

ios - 如何仅转义未转义的引号 Objective C

php - php中日语字符的编码问题