我必须使用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