require 'connect_db.php';
require 'User.php';
$stmnt = $con->prepare("select f_name, l_name from user where f_name LIKE :q OR l_name LIKE :q OR dept LIKE :q OR batch LIKE :q OR email LIKE :q");
$q = $_GET['q'];
$q1 = "'%".$q."%'";
$stmnt->bindParam(':q',$q1);
$stmnt->execute();
$results = $stmnt->fetchAll(PDO::FETCH_OBJ);
echo count($results);
当我在编写mysql命令行时,它返回1行但是这段代码不是..请帮我纠正。
我的SQL查询是:select f_name, l_name from user where f_name LIKE '%s%' or l_name LIKE '%s';
这是返回1行。
答案 0 :(得分:3)
当您使用参数时,它们将按原样发送并在需要时进行转义。你写了
$q1 = "'%".$q."%'";
这意味着最后的字符串将是'%something%'
,这将被转义到SQL查询中。您很可能不希望找到以'
开头和结尾的字符串,因此请将其移除以获取%something%
。
$q1 = "%".$q."%";
答案 1 :(得分:0)
试试这种方式。您可以在不使用连接运算符(。)
的情况下执行相同操作使用带括号括号的双引号并将变量放入其中。
$q1 = "%{$q}%";
或直接写
$q1 = "%{$_GET['q']}%";