Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Yii2更新,其中条件为数组_Mysql_Sql_Arrays_Yii2 - Fatal编程技术网

Mysql Yii2更新,其中条件为数组

Mysql Yii2更新,其中条件为数组,mysql,sql,arrays,yii2,Mysql,Sql,Arrays,Yii2,这是更新代码 $clients = OpClient::find(['id'])->where(['status'=>'Active'])->all(); foreach($clients as $client) { $array[] = $client['unit_id']; $unit = OpUnit::find()->where(['id'=>$array]); file_put_con

这是更新代码

 $clients = OpClient::find(['id'])->where(['status'=>'Active'])->all();

    foreach($clients as $client)
    {
        $array[] = $client['unit_id'];
        $unit = OpUnit::find()->where(['id'=>$array]);

         file_put_contents('test.txt',print_r($client['unit_id'],true));

         $connection = Yii::$app->db;
        $connection->createCommand()->update('op_unit', ['selected' => 'Yes'], 'id='.$array.'')->execute();
    }

如果id是数组,我应该如何键入更新查询?它不断显示错误
数组到字符串的转换
。任何建议都将被告知。谢谢

应该这样

$connection->createCommand()->update('user', 
             ['selected' => 'Yes'],['id' => $array])->execute();
使用以下命令尝试真正的sql代码

$myRawSql=   $connection->createCommand()->update('user', 
             ['selected' => 'Yes'],['id' => $array])>getRawSql();

var_dump($myRawSql);

应该是这样

$connection->createCommand()->update('user', 
             ['selected' => 'Yes'],['id' => $array])->execute();
使用以下命令尝试真正的sql代码

$myRawSql=   $connection->createCommand()->update('user', 
             ['selected' => 'Yes'],['id' => $array])>getRawSql();

var_dump($myRawSql);

要进行搜索,可以在条件中使用
。i、 e

->andWhere(['in', 'id', [1, 2, 3]])
//查询将是:其中id位于(1、2、3)

in:操作数1应为列或DB表达式。操作数2可以是 数组或查询对象。它将生成一个IN条件。 如果操作数2是数组,则它将表示值的范围 列或DB表达式应为:;如果操作数2是查询 对象,将生成一个子查询并将其用作 列或DB表达式。例如,['in','id',[1,2,3]]将 在(1,2,3)中生成id。该方法将正确引用该列 范围中的名称和转义值。in操作符还支持 组合柱。在这种情况下,操作数1应该是 列,而操作数2应为数组数组或查询 对象,表示列的范围

因此,基本上您需要将数组传递给IN进行搜索

对于更新,您可以在updateAll命令中使用相同的Where语法,即

//更新
客户
设置
状态
=1,其中id位于(1,2,3)


希望这有帮助。谢谢。

要进行搜索,您可以在
条件下使用
。i、 e

->andWhere(['in', 'id', [1, 2, 3]])
//查询将是:其中id位于(1、2、3)

in:操作数1应为列或DB表达式。操作数2可以是 数组或查询对象。它将生成一个IN条件。 如果操作数2是数组,则它将表示值的范围 列或DB表达式应为:;如果操作数2是查询 对象,将生成一个子查询并将其用作 列或DB表达式。例如,['in','id',[1,2,3]]将 在(1,2,3)中生成id。该方法将正确引用该列 范围中的名称和转义值。in操作符还支持 组合柱。在这种情况下,操作数1应该是 列,而操作数2应为数组数组或查询 对象,表示列的范围

因此,基本上您需要将数组传递给IN进行搜索

对于更新,您可以在updateAll命令中使用相同的Where语法,即

//更新
客户
设置
状态
=1,其中id位于(1,2,3)


希望这有帮助。谢谢。

您可以使用
updateAll
查询:

$update = OpUnit::updateAll(['selected' => 'Yes'],['id' => $array]);
它返回更新的行数


请参阅:

您可以使用
updateAll
查询:

$update = OpUnit::updateAll(['selected' => 'Yes'],['id' => $array]);
它返回更新的行数


参考:

我也试过这个。它没有显示错误,但数据库没有更新:/Check生成的sql查询by
var\u dump($connection->createCommand()->update('user',['selected'=>'Yes'],['id'=>$array])->createCommand()->rawSql);死亡尝试检查创建的真实rawSql。。答案更新为SuggestionKayy。让我先试试,我也试过了。它没有显示错误,但数据库没有更新:/Check生成的sql查询by
var\u dump($connection->createCommand()->update('user',['selected'=>'Yes'],['id'=>$array])->createCommand()->rawSql);死亡尝试检查创建的真实rawSql。。答案更新为SuggestionKayy。让我先试试你不必在
中使用
。使用
['id'=>$array]
(其中
$array
实际上是array)将在
条件下生成
,导致查询生成器检查值是否为array。我将查看它。感谢您的建议,您不必在
中使用
。使用
['id'=>$array]
(其中
$array
实际上是array)将在
条件下生成
,导致查询生成器检查值是否为array。我将查看它。感谢您的建议,我的id在数组中时仍然无法更新
(['1','2'])
。我可以在将值放入id时进行更新(示例1)。为什么?当我的id在数组
(['1','2'])中时,我仍然无法更新
。我可以在将值放入id时进行更新(示例1)。为什么?