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

时间:2014-11-12 15:10:45

标签: php pdo

我有一个简单的文本来自我希望传递给占位符的表单,它适用于其他文本。无论出于何种原因,当我搜索“fun”这个词时,脚本都会失败。

这是我的代码。通常,这是直截了当的,但我似乎无法绕过这一个。任何想法都表示赞赏。

    $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

1 个答案:

答案 0 :(得分:0)

问题最终是我正在使用的查询抓取太多记录,最终给我一个内存错误,会导致脚本崩溃。我如何纠正这个问题,是为了获得更有效的查询。总是像弗雷德在评论中解释的那样设置你的错误指标,并感谢N.B结束时的分号问题。所以最后它与我的通配符或占位符无关,只是一个需要改进的查询。