为什么SQL查询返回0?什么是实际查询?

时间:2017-05-05 06:10:55

标签: php mysql sql pdo

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行。

2 个答案:

答案 0 :(得分:3)

当您使用参数时,它们将按原样发送并在需要时进行转义。你写了

$q1 = "'%".$q."%'";

这意味着最后的字符串将是'%something%',这将被转义到SQL查询中。您很可能不希望找到以'开头和结尾的字符串,因此请将其移除以获取%something%

$q1 = "%".$q."%";

答案 1 :(得分:0)

试试这种方式。您可以在不使用连接运算符(。)

的情况下执行相同操作

使用带括号括号的双引号并将变量放入其中。

$q1 = "%{$q}%";

或直接写

$q1 = "%{$_GET['q']}%";