PHP SQL - 左连接+其中+或

时间:2017-01-16 14:18:16

标签: mysql sql database join left-join

我正在改进项目后台的搜索栏 我想在protfolio 中进行研究,加入category 以包含类别的名称可用的关键字。看起来很简单,但我得到的唯一信息是:

  

警告:PDOStatement :: execute():SQLSTATE [42S22]:找不到列:   1054 [...]

中'where子句'中的未知列'search_0'

我在执行之前动态创建SQL查询,如下所示:

$keywords = explode(" ", $_POST['search']);
$query = "SELECT * FROM portfolio LEFT JOIN category
          ON portfolio.portfolio_category_id = category.category_id
          WHERE ";

$query_array = array();
for ($i = 0; $i < count($keywords); $i += 1) {
    $query .= "portfolio.portfolio_title LIKE :search_" . $i;
    $query .= " OR category.category_name LIKE search_" . $i;

    if ($i != (count($keywords) - 1)) {
        $query .= " OR ";
    }
    $query_array['search_' . $i] = "%" . $keywords[$i] . "%";
}

$list_portf = $bdd->prepare($query);
$list_portf->execute($query_array);

我不是SQL的破解我真的不明白错误在哪里(我在找到的问题中找不到答案)。感谢。

1 个答案:

答案 0 :(得分:1)

在第二次参考搜索_

之前,您似乎错过了冒号:
   " OR category.category_name LIKE :search_" . $i;