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();

欢迎任何帮助。

[编辑] 这是错误:

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

您的查询中有两个参数(同名):search。尝试查看此解决方案:

PDO: "Invalid parameter number" when substituting multiple parameters with same value