繁体   English   中英

PHP SQL - 左连接 + where + 或

[英]PHP SQL - left join + where + or

我正在改进项目后台的搜索栏。
我想在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 的裂缝我真的不明白错误在哪里(我没有在我发现的问题中找到答案)。 谢谢。

似乎您错过了冒号:在您第二次搜索搜索之前_

   " OR category.category_name LIKE :search_" . $i;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM