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