PDO语句不;不要和LIKE一起工作


PDO statement doesn't work with LIKE

我的语句中有一个问题。我相信它来自LIKE,因为如果我删除它,它会很好地工作。这就是我最终得到的,但它仍然没有得到任何结果:

$search = '%' . $_POST['search'] . '%';
switch($_POST['sortby']) {
    case 'new':
        $sortby = 'code DESC';
        break;
    case 'popular':
        $sortby = 'RAND()';
        break;
    case 'cheap':
        $sortby = 'price ASC';
        break;
    case 'expensive':
        $sortby = 'price DESC';
        break;
    default:
        $sortby = 'code DESC';
        break;
}
$start = $_POST['start'];
$end = $_POST['end'];
$STH = $DBH->prepare("SELECT id, code, name, oldprice, price, date, status FROM products_retail WHERE (code LIKE :search OR name LIKE :search) AND status<>0 ORDER BY $sortby LIMIT :start, :end");
$STH->bindParam(':search', $search, PDO::PARAM_STR);
$STH->bindParam(':start', $start, PDO::PARAM_INT);
$STH->bindParam(':end', $end, PDO::PARAM_INT);
$STH->execute();

任何帮助都会得到通知。

[EDIT]这是错误:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number' in ...

您有两个参数(名称相同):在查询中搜索。试着看看这个解决方案:

PDO:";无效的参数号";用相同值替换多个参数时