PDO语句不适用于LIKE

时间:2015-03-01 10:33:18

标签: php mysql pdo

我的陈述中有一个问题。我相信它来自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 ...

1 个答案:

答案 0 :(得分:3)

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

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