gpt4 book ai didi

php - mysql选择与id数组匹配的多行

转载 作者:可可西里 更新时间:2023-11-01 07:10:01 24 4
gpt4 key购买 nike

首先:

SELECT `key`, `value` FROM settings
WHERE `key` = :base_url
OR `key` = :google_analytics
OR `key` = :site_domain

这是选择多行的正确方法吗?或者,还有更好的方法?因为它不是真正的 OR,而是所有这些......所以它听起来不对。

问题 2:

这是我使用分页选择用户的查询:

SELECT id, email, verified, level, name_surname, age, sex, profession, education, location, privacy, suspend FROM users LIMIT :start, :results

有时我想传递用户数组以返回此查询,例如 array(1,2,3,4,5)

显然,简单地添加 WHERE $array 是行不通的。那我该怎么做呢?

有时候不想传递这个id数组,那么有id列表和没有id列表的状态如何切换呢?我是否只是在 prepare 语句中创建 php if else?这似乎很明显,但最好询问最佳实践:)

最佳答案

要从where 子句中获取多个值,不需要使用OR。使用 in,如以下查询:

SELECT `key`, `value` FROM settings
WHERE `key` in ( :base_url, :google_analytics, :site_domain);

这与第一个相同:

SELECT * FROM users where id in (1,2,3,4,5);

因此,如果您有一个用户 ID 数组,您必须使用 ',' 粘合字符内爆它。

这是一个完整的 php 示例:

<?php
$users = array(1,2,3,4,5);
$usersStr = implode(',', $users); // returns 1,2,3,4,5
$sql = "SELECT * FROM users where id in ({$userStr})";
....

关于php - mysql选择与id数组匹配的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20472794/

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