PDO bindparam (?) В блоке предложения WHERE DATATABLE - PullRequest
0 голосов
/ 03 января 2019

Я использую 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 вместо (?) Напрямую не сработает, я должен связать его.

Спасибо!

1 Ответ

0 голосов
/ 03 января 2019

для предложения 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();
...