首页 / PHP / php – MySql在循环中编写语句
php – MySql在循环中编写语句
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – MySql在循环中编写语句,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1122字,纯文字阅读大概需要2分钟。
内容图文
![php – MySql在循环中编写语句](/upload/InfoBanner/zyjiaocheng/911/2fda86bf94c141bda5398866f11a0aaf.jpg)
我希望检查表中数组存储值的出现.像这样的数组:
$myarray=array("122","123","124","125");
我不想在查询中内爆数组,因为它不安全.
SELECT ledger FROM mytable WHERE ledger IN('".implode("','",$myarray)."')
我想去准备好安全声明.我试图在for循环中运行查询,但它失败了.
$not = sizeof($myarray);
for ($i = 0; $i < $not; $i++) {
$qc = 'SELECT ledger FROM mytable WHERE ledger = ?';
$st = $mysqli->prepare($qc);
$st->bind_param("i", $myarray[$i]);
$st->execute();
$ro = $st->num_rows;
if ($ro > 0){
echo "number exists";
break;
}
}
这会抛出“对非对象调用成员函数bind_param()”错误.
我相信有更好的方法可以做到这一点.有什么建议?
解决方法:
这应该为您提供原始查询的参数化版本.
$in = '';
$myarray = array('1', '2', '3');
foreach($myarray as $value) {
$in .= '?, ';
}
//or $in = str_repeat("?, ", count($myarray)); in place of foreach
$query = 'SELECT ledger FROM mytable';
if(!empty($in)) {
$in = '(' . rtrim($in, ', ') . ')';
$query .= " where ledger IN $in";
}
echo $query;
//$st = $mysqli->prepare($query);
//$st->execute($myarray);
//$ro = $st->num_rows;
输出:
SELECT ledger FROM mytable where ledger IN (?, ?, ?)
然后,您可以对结果进行提取并获取找到的所有分类帐.
内容总结
以上是互联网集市为您收集整理的php – MySql在循环中编写语句全部内容,希望文章能够帮你解决php – MySql在循环中编写语句所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。