php - PDO BindParam 不适用于 Like 语句

标签 php mysql pdo

这是我的代码:

$sch = '%test%';

$select_search_query = "(
        SELECT 
            GROUP_CONCAT(name, ' ', surname) AS result
          FROM users
        WHERE 
        (
            email LIKE :sch OR 
            name LIKE :sch OR 
            surname LIKE :sch
        ) 
        AND 
            id_p = :ff_z
    )";

$prep_search_query = $connection->prepare($select_search_query);

$prep_search_query->bindParam(":sch", $sch);
$prep_search_query->bindParam(":ff_z", $id_p, PDO::PARAM_INT);

$prep_search_query->execute();

$array_search = $prep_search_query->fetchAll(PDO::FETCH_ASSOC);

print_r($array_search);

// The output is empty

在花了几个小时寻找可能的错误之后,我终于决定出来这里,因为我不知道为什么会这样......

我正在编写一个搜索页面,它必须使用 PDO 才能工作。上面的代码不起作用,但是下面的代码起作用了:

//$sch = '%test%';

$select_search_query = "(
        SELECT 
            GROUP_CONCAT(name, ' ', surname) AS result
          FROM users
        WHERE 
        (
            email LIKE '%test%' OR 
            name LIKE '%test%' OR 
            surname LIKE '%test%'
        ) 
        AND 
            id_p = 1
    )";

$prep_search_query = $connection->prepare($select_search_query);

$prep_search_query->execute();

$array_search = $prep_search_query->fetchAll(PDO::FETCH_ASSOC);

print_r($array_search);

// The output is a very long array

看来问题出在LIKE,但我没有找到解决方案,我测试了很多东西都没有结果。谢谢!

最佳答案

不幸的是,当 PDO bindParam 时,您不能像您那样重用相同的占位符:

email LIKE :sch OR 
name LIKE :sch OR 
surname LIKE :sch

应该是这样的:

email LIKE :sch1 OR 
name LIKE :sch2 OR 
surname LIKE :sch3

然后在下面:

$prep_search_query->bindValue(":sch1", $sch); //or bindParam I guess will work as well
$prep_search_query->bindValue(":sch2", $sch);
$prep_search_query->bindValue(":sch3", $sch);

关于php - PDO BindParam 不适用于 Like 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30361937/

相关文章:

mysql - 如何计算 MySQL 中两个字段的唯一 ID?

mysql - 如何在没有事务的情况下使用 Spring-Jpa 中的 JpaSpecificationExecutor

php - PHP中的PDO中的PDO问题

php - 创建MySQL数据的备份

Android,String无法转换为JSONObject

php - 使用 PUT 上传 yii2 REST Api 文件

php - Symfony2, Composer ,您的 PHP 版本(5.6.18)被 "config.platform.php"版本(5.3.9)覆盖不满足要求

javascript - 将 JS 代码放入 PHP while 循环中

PHP PDO 事务自动回滚

php - 如何将每张图片的 ID 放在上面