我正在尝试为我的网站上的用户个人资料创建搜索功能。
$search= $_POST['search'];
$res=mysql_query("SELECT * FROM ".TBL_USERS." WHERE username LIKE '$search%'");
这是我使用的代码。这只有在搜索与结果开头匹配的内容时才有效。有没有什么方法可以返回值,我输入的内容作为用户名的一部分而不是大写或小写?
三江源
答案 0 :(得分:3)
“%”是通配符,因此如果您还将其放在搜索字符串前(例如%$search%
),它将在用户名中的任意位置匹配$ search。
在SQL中使用“LOWER”使用户名小写,并在PHP中使用“strtolower”执行相同的操作,然后执行查询以获得不区分大小写的结果。
正如David Dorward所说:在你做任何事之前先阅读bobby-tables.com !!!
答案 1 :(得分:0)
你应该真正添加某种数据清理,你永远不应该采用原始的post / get数据并将其直接插入到查询中。
随着说:
$search= strtolower($_POST['search']);
$res=mysql_query("SELECT * FROM ".TBL_USERS." WHERE LOWER(username) LIKE '$search%'");
答案 2 :(得分:0)
当您使用LIKE时,您可以在输入的两侧使用%通配符,这将返回$ search是用户名的一部分的任何用户。
您可能还想查看MySQLs REGEXP function
$search= mysql_real_escape_string($_POST['search']);
$res=mysql_query("SELECT * FROM ".TBL_USERS." WHERE username LIKE '%" . $search . "%'");
答案 3 :(得分:-3)
你需要阅读“SQL注入”和“PHP准备语句”这两个术语 - 谷歌为他们......这对你提出的问题更为重要。
但是既然你问,请尝试以大写的比较全部...
马丁。