gpt4 book ai didi

mysql - Yii IN 子句的绑定(bind)值

转载 作者:行者123 更新时间:2023-11-29 12:38:36 25 4
gpt4 key购买 nike

为了防止 Yii In 子句中的 SQL 注入(inject),我们需要在 IN 子句中绑定(bind)参数,但 Yii CDB 标准查询没有内置此功能。

$products_ids = array(234,100,405,506);

映射数组进行绑定(bind)

$in_query = implode(',', array_fill(0, count($products_ids), '?'));

准备commadn对象以供选择

$command = Yii::app()->db->createCommand()
->select('product_id, product_name, product_image, product_price')
->from('products')
->where('product_id IN(' . $in_query . ')');

绑定(bind)参数

foreach ($products_ids as $k => $product_id){
$command->bindValue(($k+1),$product_id,PDO::PARAM_INT);
}

获取结果

$products = $command->queryAll();

最佳答案

这是 yii 的 in 条件的示例。我今天用过这个:

$orderIds = array(1,2);
$criteria = new CDbCriteria();
$criteria->addInCondition("order_id", $orderIds,'AND');
$criteria->condition = 'product_id = :product_id';
$criteria->params = array(':product_id'=>$product->id );
$orderItems=new CActiveDataProvider('OrderItems', array(
'criteria'=>$criteria,
'pagination'=>array(
'pageSize'=>20,
),
));

我自己之前也问过这个问题,请参见这里: Yii using a variable with an IN condition

我将此作为答案而不是评论,因为我在使用 addInCondition 和另一个条件时也遇到了问题,这是由于末尾不包含 'AND' ,因为 addInCondition 是替换参数并给我一个关于无效参数数量的错误。希望这会有所帮助。

关于mysql - Yii IN 子句的绑定(bind)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26423622/

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