【问题标题】:Select rows searching with an id in a column that contains multiple ids separated by a comma在包含多个用逗号分隔的 id 的列中选择使用 id 搜索的行
【发布时间】:2025-12-27 02:50:11
【问题描述】:

我在 mysql db 中有一个列,其中包含多个用逗号分隔的 id,如下所示... 100,112,324 。该列定义为 varchar。

我想找到那些 ids 列包含 id 112 或我指定的其他一些 id 的行。我发现的类似问题建议使用冗长的代码拆分列中的值。也许我错了,但我认为有一种更清洁的方法。这是我正在尝试做的,任何帮助表示赞赏...

<?php

include "../connect.php";
$usrid = "%112%";

$stm = $conn->prepare("SELECT * FROM subjects WHERE ids LIKE ?");
$stm->execute($usrid);
while($row = $stm->fetch(PDO::FETCH_ASSOC)) {
echo $row['consultant']."<br>";
}

?>

我得到一个空白页。

【问题讨论】:

  • 尝试用单引号包围问号,例如:$stm = $conn->prepare("SELECT * FROM subject WHERE ids LIKE '?'");
  • 我不确定 PDO,但在 MySQLi 中,准备好的语句占位符 ? 不应放在引号中

标签: php mysql select pdo sql-like


【解决方案1】:

看看这个PDO prepared statement

尝试将“待绑定变量”放入数组中:

$stm->execute(array($usrid));

【讨论】:

  • 基于似乎可以解决问题的快速测试。非常感谢!
【解决方案2】:

对 LIKE 查询使用单引号,因为您的数据类型为 varchar。 尝试这个: $stm = $conn->prepare("SELECT * FROM subjects WHERE ids LIKE '?'"); $stm->execute($usrid);

【讨论】: