php mysql - 搜索 - 变量

时间:2011-12-27 14:21:32

标签: php

我有一个表单,用户可以输入要搜索的名字,我的查询没有返回正确的结果,我做错了什么?

$sfn = $_POST["Text1"];
$sql = "SELECT * FROM ex_usrs WHERE firstname LIKE '$sfn'";
...

4 个答案:

答案 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%'"