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

前端之家收集整理的这篇文章主要介绍了在PHP中,如何创建包含引号和撇号的mySQL选择查询?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 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块是没有用的.只需关闭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相关文章