我正在使用
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>
看起来更清晰,可读和方便