我尝试使用mySQL、PHP和PDO选择多个id,如下所示:
$scheme_ids = "23,24";
// get details for all permitted schemes
$stmt = $pdo->prepare("SELECT * FROM schemes WHERE id IN(?)");
$stmt->execute([$scheme_ids]);
$schemes = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = null;
foreach ($schemes as $scheme){
echo $scheme['reference']."<br>";
}
schemes表中有两个ID的行,但它只选择ID 23的值。结果数组不包含ID 24的任何内容。
有人有什么想法吗?
最佳答案
从PDOStatement::execute的文档中:
不能将多个值绑定到单个参数;例如,不允许在in()子句中将两个值绑定到单个命名参数。
在这种情况下,不能使用语句准备;必须将值连接到查询字符串中。我假设$scheme_ids
是从实际应用程序中的某种用户输入动态获取的,因此请确保正确地转义它。
$stmt = $pdo->prepare("SELECT * FROM schemes WHERE id IN($scheme_ids)");
$stmt->execute();
关于php - MySQL仅选择存在多个ID匹配的一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51928421/