Jer*_*owe 6 php mysql escaping quoting
我正在使用mysql_real_escape_string将数据存入我的数据库而没有任何问题.
所以数据库中的条目可能是:
1/4" Steve's lugnuts
Run Code Online (Sandbox Code Playgroud)
所以这完全在数据库中.
现在我想搜索那个确切的东西.但是,它会陷入"或者"(我已经尝试了很多东西,它总是在某处弄乱).
这就是我现在拥有的:( 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>";
Run Code Online (Sandbox Code Playgroud)
但问题是,我似乎无法得到任何错误.
搜索字段(应该填充它们已经放入的内容)只有:
1/4\" Steve\
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
搜索字段(应该填充它们已经放入的内容)就是这样
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>";
Run Code Online (Sandbox Code Playgroud)
还要注意,回复这么大的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>
Run Code Online (Sandbox Code Playgroud)
看起来更清晰,可读和方便