0

我将使用表单通过 url get 将关键字发送到页面本身,以应用于 sql 语句以进行关键字搜索:-

if (isset($_GET['k']))
{
$keyword = $_GET['k'];
$keyword = urldecode($keyword);
}

<form action = "home.php" method="get">
<input type = "text" name="k" value = "" size = "40"/>
<input type = "submit" value = "search">
</form>

$sql = "select * from [phone] where ([name] like '%$keyword%') order by id DESC";

对于英文内容,我可以完美地从 URL 中获取关键字;但是对于中文字符,虽然我已经将 urldecode 应用于 $_GET 值,但我仍然无法恢复中文单词。有没有更好的方法来解决这个问题?谢谢!

4

1 回答 1

0

通常,在恢复 GET 值时,您不必使用 urldecode。

除此之外,您还有一个令人讨厌的 SQL 注入问题:

$sql = "select * from [phone] where ([name] like '%$keyword%') order by id DESC";

更改为(如果是 mysql):

$sql = sprintf("select * from [phone] where ([name] like '%%%s%%') order by id DESC", mysql_real_escape_string($keyword));

最好使用准备好的语句,或者像 Zend_DB_Select 之类的东西。

于 2012-07-11T07:24:05.257 回答