如何使用“IN (1,2,3)”与查找全部?

发布于 2024-11-05 23:43:30 字数 432 浏览 0 评论 0原文

我需要从数据库中获取几个学生,并且我将他们的主键放在以逗号分隔的字符串中。

通常使用 SQL 会是这样的:

$cleanedStudentIdStringList = "1,2,3,4";
SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList)

Yii 的 ActiveRecord 似乎在生成的 SQL 语句中的绑定参数周围插入单引号,这会导致使用参数绑定时查询失败。

这可行,但不使用安全参数绑定。

$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");

有没有办法仍然使用参数绑定并在单个查询中仅获取几行?

I need to get a couple of Students from the database, and I have their primary keys in a comma-separated string.

Normally using SQL it would be something like:

$cleanedStudentIdStringList = "1,2,3,4";
SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList)

Yii's ActiveRecord seems to insert a single quote around bound parameters in the resulting SQL statement which cause the query to fail when using parameter binding.

This works, but doesn't use safe parameter binding.

$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");

Is there a way to still use parameter binding and get only a couple of rows in a single query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

勿忘初心 2024-11-12 23:43:30

您也可以这样做:

$criteria = new CDbCriteria();
$criteria->addInCondition("id", array(1,2,3,4));
$result = Student::model()->findAll($criteria);

并在数组中使用您需要的任何值。

阿列克西

You can do it also that way:

$criteria = new CDbCriteria();
$criteria->addInCondition("id", array(1,2,3,4));
$result = Student::model()->findAll($criteria);

and use in array any values you need.

Aleksy

不念旧人 2024-11-12 23:43:30

您还可以使用 findAllByAttributes 方法:

$a=array(1,2,3,4);
$model = Student::model()->findAllByAttributes(array("id"=>$a));

You can use findAllByAttributes method also:

$a=array(1,2,3,4);
$model = Student::model()->findAllByAttributes(array("id"=>$a));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文