2019年8月27日 星期二

PHP PDO IN 條件

使用PHP PDO 在組合查詢語法時若有 IN 條件,通常會用此方法
  1. $myArray = array(1,2,3);
  2. $in = trim(str_repeat('?,', count($myArray)),',');
  3. $stm = $conn->prepare("SELECT * FROM table WHERE id IN ($in)");
  4. $stm->execute($myArray);
萬一遇上 $myArray 的個數很多時,會造成語法太長,無法執行怎麼辦?
試試下面這個方法
  1. $myArray = array(1,2,3);
  2. $in = implode(',', $myArray);
  3. $stm = $conn->prepare("SELECT * FROM table WHERE FIND_IN_SET(id, :inArray) ORDER BY name");
  4. $stm->bindParam('inArray', $in);
  5. $stm->execute();
如果是 not in,就加上一驚嘆號,變成 !FIND_IN_SET 就可以了
  1. $myArray = array(1,2,3);
  2. $in = implode(',', $myArray);
  3. $stm = $conn->prepare("SELECT * FROM table WHERE !FIND_IN_SET(id, :inArray) ORDER BY name");
  4. $stm->bindParam('inArray', $in);
  5. $stm->execute();

沒有留言:

張貼留言