我试图替换:搜索执行查询但似乎没有被替换

时间:2014-02-25 16:14:45

标签: mysql pdo

在审核了这个SO之后,我在使用预准备语句时遇到了一些麻烦。

我已将以下内容添加到我的数据库连接中:

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

以下是我的查询声明:

$query = "SELECT schedules.schedule_name, users.name, schedules.schedule_id
    FROM schedules
    INNER JOIN users
    ON schedules.admin_id=users.user_id
    WHERE schedules.schedule_name
    LIKE '%:search%'
    ORDER BY schedules.schedule_name";
    $stmt   = $db->prepare($query);
    $result = $stmt->execute(array('search' => $search_string));
    $search_results = $stmt->fetchAll();

正如您在LIKE中看到的,我正在尝试替换:在执行查询时搜索但似乎没有被替换。

1 个答案:

答案 0 :(得分:0)

当您进行参数化查询时,它不仅仅是字符串替换,并且您不用单引号将其包围:

$query = "SELECT schedules.schedule_name, users.name, schedules.schedule_id
    FROM schedules
    INNER JOIN users
    ON schedules.admin_id=users.user_id
    WHERE schedules.schedule_name
    LIKE :search
    ORDER BY schedules.schedule_name";

但是你希望这个词周围有%个通配符吗?注入时添加它们:

$result = $stmt->execute(array('search' => '%' . $search_string . '%' ));