我有一段来自表单的简单文本,我想传递给占位符,它可以处理其他文本。无论出于什么原因,当我用"有趣"这个词搜索时,脚本都会失败。
这是我的密码。通常情况下,这是直截了当的,但我似乎无法理解这一点。任何想法都值得赞赏。
$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.末尾的分号问题。所以最终它与我的通配符或占位符无关,只是一个需要改进的查询。