【发布时间】:2026-01-22 14:10:02
【问题描述】:
我正在查询数据库以返回 user_id 的 user_name 行,并在 PHP 中使用以下准备好的语句:
$stmt = $conn->prepare("SELECT user_name FROM users WHERE user_id IN (?,?,?,?,?,?,?,?,?,?)");
如果IN 语句中的每个变量都是唯一的并且在数据库中,我会收到每个变量的 1 个user_name 结果。 但是,如果我的 IN 语句中的变量不是唯一的(其中两个 user_id 是 foo),我目前没有得到每个 IN 变量的 user_name 结果。
如何修改我准备好的语句,这样即使我的 IN 语句中的所有变量都相同,我仍然会收到每个变量 1 行,如果变量不是则返回 null成立。
【问题讨论】:
-
对不起,如果我的问题不清楚,我发现在这里很难表达我的问题,如果有什么不清楚的地方请询问,我会编辑问题
-
如果我理解正确,您正在查询一个包含多个
users的表,每个表都有一个唯一的 user_id,并且您正在传递WHERE user_id IN (1, 2, 2, 3, 4, 5)并期望 user_id=2 的用户被返回两次? -
@JavierLarroulet 是的,这是正确的
-
认真考虑处理应用代码中数据显示的问题
-
“我不确定你的意思,请你详细说明” 最简单的方法是创建一个类似
$array[1, 2, 2, 3, 4, 5]的显示数组并创建一个记录数组来存储数据来自数据库..只需简单的循环并将显示数组与记录数组匹配并回显它们。
标签: php mysql sql prepared-statement