PDO(bindValue)不喜欢我的通配符


PDO (bindValue) not liking my wildcards

我有一段来自表单的简单文本,我想传递给占位符,它可以处理其他文本。无论出于什么原因,当我用"有趣"这个词搜索时,脚本都会失败。

这是我的密码。通常情况下,这是直截了当的,但我似乎无法理解这一点。任何想法都值得赞赏。

    $search = $_POST['searchInput'];
    $search = strtolower($search);
    $search = '%'.$search.'%';
    try {
        $sqlSearch = "SELECT items.item_id,item_detail,auc_id,item_desc,categories,min_bid_increment,auc_start,auc_end,display_item,bidder,amount_bid FROM items
                LEFT JOIN bid_history ON items.item_id = bid_history.item_id
        WHERE org_id = :orgid
        AND auc_id NOT LIKE 'live%'
        AND display_item = '1'
        AND item_detail LIKE :searchInput
        OR item_desc LIKE :searchInput
        OR items.item_id LIKE :searchInput
        ORDER BY items.item_id ASC, bid_history.amount_bid DESC;";
        $sSearch = $pdo->prepare($sqlSearch);
        $sSearch->bindValue(':orgid',$org_id);
        $sSearch->bindValue(':searchInput',$search);
        $sSearch->execute();
        $resultsSearch = $sSearch->fetchAll();
    }
    catch (PDOException $e) {
        echo $e;
    }

编辑:

如果我手动将这个查询放入数据库,我会得到结果。

SELECT items.item_id,item_detail,auc_id,item_desc,categories,min_bid_increment,auc_start,auc_end,display_item,bidder,amount_bid FROM items 
    LEFT JOIN bid_history ON items.item_id = bid_history.item_id
    WHERE org_id = 'CHS102915' 
    AND auc_id NOT LIKE 'live%' 
    AND display_item = '1' 
    AND item_detail LIKE '%fun%'
    OR item_desc LIKE '%fun%'
    OR items.item_id LIKE '%fun%'
    ORDER BY items.item_id ASC, bid_history.amount_bid DESC

最终的问题是我使用的查询获取了太多记录,这导致了内存错误,导致脚本崩溃。我如何纠正这一点,是为了有一个更有效的查询。总是按照Fred在上面的评论中解释的那样设置错误指示器,感谢N.B.末尾的分号问题。所以最终它与我的通配符或占位符无关,只是一个需要改进的查询。