gpt4 book ai didi

PHP 内爆数组生成 mysql IN 条件

转载 作者:可可西里 更新时间:2023-11-01 07:17:14 24 4
gpt4 key购买 nike

我有一个类似下面的函数:

public function foo ($cities = array('anaheim', 'baker', 'colfax') )
{
$db = global instance of Zend_Db_Adapter_Pdo_Mysql...

$query = 'SELECT name FROM user WHERE city IN ('.implode(',',$cities).')';
$result = $db->fetchAll( $query );
}

在有人将 $cities 作为空数组传递之前,一切正常。

为了防止这个错误,我一直在像这样打破查询的逻辑:

$query = 'SELECT name FROM user';
if (!empty($cities))
{
$query .= ' WHERE city IN ('.implode(',',$cities).')';
}

但这不是很优雅。我觉得应该有更好的方法来按列表过滤,但我不确定如何。有什么建议吗?

最佳答案

如果您最终使用了选择对象,->where() 方法实际上会为您处理数组。仍然需要检查数组中是否有项目,但这使它成为一种更简洁的方法...

$select = $db->select()->from('user', 'name');

if ($cities) {
$select->where('city IN (?)', $cities);
}

关于PHP 内爆数组生成 mysql IN 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3867840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com