我有一个代码,可以使用ajax动态搜索数据库中的数据,但是一次只能搜索1个关键字。我想对其进行修改,以便可以搜索多个关键字。现在,如果在数据库中输入2个用空格分隔的关键字,则数据不会用空格分隔,将不会有结果。如果在数据库中,则数据为:
‘playstation3’或’play cool station3’
我搜索:
游戏站
没有结果。我想知道是否可以修改我的代码,以便我可以搜索2个或更多由空格或另一个单词或DOT或下划线或(-)或(+)或(%)分隔的关键字或单词或(其他任何东西)。
我知道我应该使用pdo或mysqli,但是我仅将其用于测试!
$queried = $_POST['query']; $search = mysql_query("SELECT * FROM links WHERE name LIKE '%$queried%'"); while($searche = mysql_fetch_array($search)){ echo "".$searche['link']."</br>".$searche['name']."</br>".$searche['size']."</br>".$searche['category']."<hr></br></br>"; }
要动态搜索所有关键字,可以使用explode函数将所有关键字分开;
$queried = mysql_real_escape_string($_POST['query']); // always escape $keys = explode(" ",$queried); $sql = "SELECT * FROM links WHERE name LIKE '%$queried%' "; foreach($keys as $k){ $sql .= " OR name LIKE '%$k%' "; } $result = mysql_query($sql);
注意1: 在查询中使用用户输入之前,请务必先对其进行转义。
注意2: 不建议使用mysql_ *函数,请使用Mysqli或PDO作为替代方法
2018年更新-注意3: 不要忘记检查$queried变量的长度并设置限制。否则,用户可以输入不同的大字符串并使数据库崩溃。
$queried