我正在将Datatable和PDO一起使用,并且对此where子句有疑问:
$orderBy=" ORDER BY dayofweek>=1 DESC, dayofweek ASC, starttime ASC ";
$sql="SELECT SQL_CALC_FOUND_ROWS op.*
FROM ophours op
WHERE op.memberid IN (?)
$orderBy
LIMIT ?,? ; ";
$res=pdoquery($sql, array($shopids, (int)$_GET['iDisplayS'], (int)$_GET['iDisplayL']));
如果我删除了行WHERE op.memberid IN (?)
,同时又从绑定的参数中删除了$ shopids,则分页将再次工作。
如果不这样做,我只能得到第一页的结果。如果尝试加载更多结果,则会出现错误500。
我几乎可以确定问题出在WHERE X IN (?)
您知道替换此行的方法吗?直接放入$ shopids而不是(?)无效,我必须将其绑定。
谢谢!
答案 0 :(得分:0)
对于带有数组的in子句,您应该传递?数组中有多少元素
$in = str_repeat('?,', count($shopids) - 1) . '?';
$sql="SELECT SQL_CALC_FOUND_ROWS op.*
FROM ophours op
WHERE op.memberid IN ($in)
$orderBy
LIMIT ?,? ; ";
$stm = $db->prepare($sql);
$stm->execute($arr,(int)$_GET['iDisplayS'], (int)$_GET['iDisplayL']);
$res = $stm->fetchAll();