Мой PHP выглядит следующим образом:передать несколько параметров в PDO
$diagSel = $_POST['diagSel'];
$search_crit = $_POST['criteria']; //this is an entry like "85054,85206" (no quotes)
$sql1 = "SELECT * FROM `myTable` where`Diagnosis` = :diagnosis and `zip_code` in (:placeHolder) group by `Provider Number`";
$stmt = $dbh->prepare($sql1);
$stmt->bindParam(':diagnosis', $diagSel, PDO::PARAM_STR);
$stmt->bindParam(':placeHolder', $search_crit, PDO::PARAM_STR);
$stmt->execute();
$result1 = $stmt->fetchAll(PDO::FETCH_ASSOC);
header('Content-type: application/json');
echo json_encode($result1);
Вот проблема ... если пользователь вводит несколько кодов ZIP (переданные в criteria
), которые должны быть разделены запятой, это ECHO
сек ничего. Если они вводят один ZIP-код, он возвращает именно то, что я ожидаю.
Есть ли способ передать значение, разделенное запятыми, PDO, например 85054,85206, с использованием подготовленных операторов?
Спасибо.
Используйте обертку ORM или PDO, которая поддерживает привязку к массиву (Aura.SQL делает, другие разрешают заполнители списка '' 'в стиле Perl). Альтернативно: используйте 'FIND_IN_SET()' для списка CSV. – mario
Не использовали методы '??' намного раньше ... можете ли вы привести пример? – jonmrich
Это не вещь PDO. Для этого требуется библиотека абстракции сверху, которая допускает такие заполнители. Иначе вам придется прибегать к [hodgepodge 'join()'/etc. обходные] (http://stackoverflow.com/questions/14767530/php-using-pdo-with-in-clause-array). – mario