我必須使用IN
運算符從數據庫中選擇一些行。我想用準備好的陳述來做。這是我的代碼:MySQLi準備語句與IN運算符
<?php
$lastnames = array('braun', 'piorkowski', 'mason', 'nash');
$in_statement = '"' . implode('", "', $lastnames) . '"'; //"braun", "piorkowski", "mason", "nash"
$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)');
$data_res->bind_param('s', $in_statement);
$data_res->execute();
$result = $data_res->get_result();
while ($data = $result->fetch_array(MYSQLI_ASSOC)) {
...
}
?>
但是,雖然所有的數據都存在於數據庫中,但什麼都不返回。
還有一個:如果我直接通過$in_statement
查詢並執行它,數據將被返回。所以問題出現在準備上。
我一直在谷歌尋找這個問題,但它並不成功。我的代碼有什麼問題?
感謝您的幫助!
你不能在你的IN子句中使用單個參數。它需要是: '在哪裏姓氏在(?,?,?,?)' – andrewsi 2012-08-13 17:01:58
好吧,非常感謝!)它似乎有點麻煩。 – kpotehin 2012-08-13 17:04:28