我尝试使用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/

10-13 08:49