我查看了其他堆栈溢出答案,但除了错误代码之外,我没有看到与我的问题类似的任何内容。
我正在尝试在我的查询中使用一个有效的数组,但我不确定为什么使用 : start
和 : offset
绑定它无法运行。
$location = array("England", "America", "Australia");
$qMarks = str_repeat('?,', count($location) - 1) . '?';
//Query
$sql=$conn->prepare("SELECT * FROM adverts WHERE location IN ($qMarks) AND status = 2 LIMIT :limit OFFSET :start");
$sql->bindValue(':limit', (int) $limit, PDO::PARAM_INT);
$sql->bindValue(':start', (int) $start, PDO::PARAM_INT);
$sql->execute($location);
$adverts=$sql->fetchAll();
我不确定为什么存在限制和偏移绑定它不会运行,这与您无法组合位置占位符有关。
更新 1 -
如果我删除数组和 qMark 并将执行更改为sql->execute();
然后绑定运行
不能在一个预准备语句中混合使用?
绑定和:param
绑定。
所以,你需要这样的东西:
$location = array("England", "America", "Australia");
$qMarks = str_repeat('?,', count($location) - 1) . '?';
$location[] = (int)$limit;
$location[] = (int)$offset;
$sql = $conn->prepare("SELECT * FROM adverts WHERE location IN ($qMarks) AND status = 2 LIMIT ? OFFSET ?");
$sql->execute($location);