格式化SQL“IN”子句的PHP数组
|
我正在尝试在数据库中查询“product_id”包含在产品ID数组中的记录. 该数组是多选输入(< select>)的结果,如下所示: $clients =
Array (
[0] => 80000016-1302638679
[1] => 8000003B-1329924004
)
我想将该数组传递给SQL语句的“IN”子句,例如: $sql = "SELECT * FROM sales WHERE product_id IN (".$clients.")";
…但这不起作用(错误:消息:数组到字符串转换). 一些帖子建议使用此函数以适合SQL的方式格式化数组: function format_array($array){
return implode(',',$array);
}
}
如 … $sql = "SELECT * FROM sales WHERE product_id IN (".format_array($clients).")";
这导致了这个查询: SELECT * FROM sales WHERE product_id IN(80000016-1302638679,8000003B-132992400) ……而且这个错误: ‘where子句’中的未知列’8000003B’ 我究竟做错了什么?任何帮助是极大的赞赏!如果需要,我可以澄清这个问题:) 解决方法有一个更好的方法您在评论中提到您正在使用CodeIgniter.除非你正在制作一些非常复杂的东西,否则当你内置 如果这不起作用,那么就有了很好的产品 好的,所以,你有大多数人说你需要引用这些项目并给你这个: function createInClause($arr)
{
return ''' . implode( '','',$arr ) . ''';
}
但如果您有可能输入有问题(例如 function createInClause($arr)
{
$tmp = array();
foreach($arr as $item)
{
// this line makes sure you don't risk a sql injection attack
// $connection is your current connection
$tmp[] = mysqli_escape_string($connection,$item);
}
return ''' . implode( '',$tmp ) . ''';
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在SQL Server中的给定列的末尾追加字符串?
- sql-server – 所有那些SQL Server会话来自哪里?
- SQL Server 修改标识列方法 如自增列的批量化修改
- sql – ActiveRecord语法,用于在使用连接时查找平均评级为x
- sql-server – 什么时候动态端口“动态”?
- sql-server – SQL Server备份压缩vs 7zip
- Wix:是否有任何wix命令来创建数据库用户?
- sql-server – SQL Server中的区分大小写的变量
- sql-server – 添加sql表的唯一约束作为另一个sql表的外键引
- 将数据库文件复制到android中的sdcard
