我们在获取PDO格式的记录时遇到了一些问题。参见下面的示例代码:
$getCategories= Yii::app()->db->createCommand()
->select('id,category_name')
->from('content_categories')
->where('id IN (:id)', array(':id'=>$getContentList['content_category_value']))
//->where("id IN ({$getContentList['content_category_value']})")
->queryAll();
print_r($getCategories); exit;
输出:
Array
(
[0] => Array
(
[id] => 1525
[category_name] => TV
)
)
在查询$getContentList['content_category_value'])
上返回1525,45
,但我们只得到一条记录。
当我们手动执行查询时:
SELECT * FROM `content_categories` WHERE `id` IN (1525,45);
它返回:
实际上,我们有两个类别,但以上查询仅获取一个类别。您能否检查一下并帮助我了解我们如何使用PDO概念显示多条记录。
答案 0 :(得分:0)
未经测试,但您可以尝试这样
$getCategories= Yii::app()->db-
>createCommand()
->select('id,category_name')
->from('content_categories')
->where(array('in', 'id',
$getContentList['content_category_value']))
->queryAll();
print_r($getCategories); exit;
答案 1 :(得分:0)
如果$getContentList['content_category_value']
是字符串,那么它将在查询中用作字符串。所以你可能会得到这样的东西:
SELECT * FROM `content_categories` WHERE `id` IN ('1525,45');
如果要建立IN
条件,则需要使用带有IN
运算符的值数组:
->where(['in', 'id', explode(',' $getContentList['content_category_value'])])