Как написать SQL-оператор, который выбирает количество строк с конкретными идентификаторами? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть таблица, в которой я хотел бы выбрать количество строк из одного оператора sql.Это возможно?Если да, то может ли кто-нибудь помочь мне с синтаксисом для такого утверждения?Я собирался извлекать строки отдельно в цикле foreach (PHP).

// PHP
 $USER_ID = user_2
 $arraySearchRecords = [id_2, id_21, id_54, id_543];

 foreach($arraySearchRecords as $docId){
     $sql = "SELECT * FROM myTable WHERE userId='$USER_ID' AND documentId='$docId' LIMIT 1";
     $result = $MYSQLI -> query($sql);

 }

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Выполните следующие действия: 1. Создать строку из массива $ arraySearchRecord, используя implode. 2. Используйте условие WHERE IN () для поиска более одного условия.

   <?php
      $USER_ID = user_2
      $condition = implode(',',$arraySearchRecord);
      $condition = rtrim(',',$condition); //used to remove the last
      $sql='SELECT * from myTable WHERE userId = "$USER_ID" AND documentId IN ($clause)';
      $result = $MYSQLI -> query($sql);
   ?>
0 голосов
/ 24 октября 2018

внедрить ваш массив в виде значений, разделенных запятыми, таких как "id_2", "id_21", "id_54", "id_543" и использовать предложение IN

$clause = implode(",",$arraySearchRecord);
$clause = rtrim(",",$clause); //this will remove the last , that remains in the string 

$sql="SELECT * from myTable WHERE documentId IN ($clause)";

. При этом будут получены все записи, соответствующие одной иззначения в предложении in

Подробнее см. в руководстве

Таким образом, вам не нужно повторять массив с циклом и повторять запрос несколько раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...