我已经看过其他堆栈溢出答案,但除了错误代码之外,我没有看到任何与我的问题相似的内容。
我正在尝试在我的查询中使用数组但是我不确定为什么使用: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();
然后绑定运行
答案 0 :(得分:1)
您不能在一个预准备语句中混合使用?
绑定和: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);