我有一个表单,用户可以输入要搜索的名字,我的查询没有返回正确的结果,我做错了什么?
$sfn = $_POST["Text1"];
$sql = "SELECT * FROM ex_usrs WHERE firstname LIKE '$sfn'";
...
答案 0 :(得分:5)
也许您应该在关键字中添加%-signs:
$sql = "SELECT * FROM ex_usrs WHERE firstname LIKE '%$sfn%'";
答案 1 :(得分:3)
您应该使用%searchterm%
- 包含%
通配符。
$sql = "SELECT * FROM ex_usrs WHERE firstname LIKE '%$sfn%'";
答案 2 :(得分:2)
您的查询只会返回firstname
等于 $_POST["Text1"]
的行。使用LIKE
时,您可以使用通配符(%
)来表示任意数量的字符。
这会找到firstname
以 $_POST["Text1"]
开头的行。
SELECT * FROM ex_usrs WHERE firstname LIKE '$sfn%'
这会找到firstname
以 $_POST["Text1"]
结尾的行。
SELECT * FROM ex_usrs WHERE firstname LIKE '%$sfn'
这会找到firstname
包含 $_POST["Text1"]
的行。
SELECT * FROM ex_usrs WHERE firstname LIKE '%$sfn%'
注意:从不使用$_POST
中的变量而不首先转义它们。如果我搜索"O'Neil"
(或更糟"'; DROP TABLE ex_users; -- "
)该怎么办?
答案 3 :(得分:1)
应该是
"SELECT * FROM ex_usrs WHERE firstname LIKE '%$sfn%'"