gpt4 book ai didi

mysql-error-1064 - 如何在 Yii 框架中使用 IN/AND 子句?

转载 作者:行者123 更新时间:2023-12-04 03:31:42 25 4
gpt4 key购买 nike

我有一个包含 3 列的 MySQL 表:ID、名称、用户。
我希望在 Yii 框架中使用以下 SQL:

$sql = "SELECT * FROM my_table WHERE idName=".$name." AND user IN .$arrayOfUsers;
// $arrayOfUsers is an array of int [0]->1, etc.

我尝试了三种不同的方式,但都没有成功:

1)
$sql = "SELECT * FROM my_table WHERE idName=".$name." AND user IN .$arrayOfUsers;
$command = $connection->createCommand($sql);
$dataReader = $command->query();
$query = $dataReader->readAll();

错误是:

PHP Error [8]

Array to string conversion



2)
$query = Yii::app()->db->createCommand()
->select('*')
->from('my_table')
->where(array('and', array('in', 'user', $arrayOfUsers), array('idName' => $name)))
->queryAll();

错误是:

PHP Error [8]

Undefined offset: 0



3)
 $query = Yii::app()->db->createCommand()
->select('*')
->from('my_table')
->where(array('and', array('in', 'user', $arrayOfUsers), 'idName='.$name)))
->queryAll();

错误是:

CDbException

CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'idName=7)' at line 3. The SQL statement executed was: SELECT * FROM my_table WHERE (user IN ('1', '2', '3', '4')) AND (idName=7)

最佳答案

有很多方法可以做,但我想使用 Active Record 来处理这件事。
但是,你的问题是关于查询生成器的,我给你一个正确的

编辑:(作为您的评论,idName 是大 INT 而不是 var char)

1) 因为你通过了 $arrayOfUsers 你得到了错误这是数组,而不是 sql 中的预期字符串。它应该是

 $connection=Yii::app()->db;
$sql = "SELECT * FROM my_table WHERE idName=".$name." AND (user IN(".implode(',',$arrayOfUsers)."))";
$command = $connection->createCommand($sql);
$query = $command->queryAll();

2) 使用 Query builderwhere operator
$query = Yii::app()->db->createCommand()
->select('*')
->from('my_table')
->where(array('in', 'user', $arrayOfUsers))
->andwhere('name = :name', array('idName'=>$name))
->queryAll();

3)如果你想把它们包起来也可以,但是这样不好看
$query = Yii::app()->db->createCommand()
->select('*')
->from('my_table')
->where(array('and', 'idName= ' . $name, array('in', 'user', $arrayOfUsers)))
->queryAll();

更多使用方法引用 where operator来自官方文件
// WHERE id=1 or id=2
where('id=1 or id=2')
// WHERE id=:id1 or id=:id2
where('id=:id1 or id=:id2', array(':id1'=>1, ':id2'=>2))
// WHERE id=1 OR id=2
where(array('or', 'id=1', 'id=2'))
// WHERE id=1 AND (type=2 OR type=3)
where(array('and', 'id=1', array('or', 'type=2', 'type=3')))
// WHERE `id` IN (1, 2)
where(array('in', 'id', array(1, 2))
// WHERE `id` NOT IN (1, 2)
where(array('not in', 'id', array(1,2)))
// WHERE `name` LIKE '%Qiang%'
where(array('like', 'name', '%Qiang%'))
// WHERE `name` LIKE '%Qiang' AND `name` LIKE '%Xue'
where(array('like', 'name', array('%Qiang', '%Xue')))
// WHERE `name` LIKE '%Qiang' OR `name` LIKE '%Xue'
where(array('or like', 'name', array('%Qiang', '%Xue')))
// WHERE `name` NOT LIKE '%Qiang%'
where(array('not like', 'name', '%Qiang%'))
// WHERE `name` NOT LIKE '%Qiang%' OR `name` NOT LIKE '%Xue%'
where(array('or not like', 'name', array('%Qiang%', '%Xue%')))

http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder

关于mysql-error-1064 - 如何在 Yii 框架中使用 IN/AND 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18151600/

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