Php mySQL仅选择有多个ID匹配的一行

Php mySQL仅选择有多个ID匹配的一行,php,mysql,pdo,Php,Mysql,Pdo,我尝试使用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

我尝试使用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>";     
}
$scheme\u ids=“23,24”;
//获取所有许可计划的详细信息
$stmt=$pdo->prepare(“从id在(?)中的方案中选择*);
$stmt->execute([$scheme_id]);
$schemes=$stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt=null;
foreach($方案作为$方案){
echo$scheme['reference']。“
”; }
schemes表中有两个ID的行,但它只选择ID 23的值。结果数组不包含ID为24的任何内容


有人有什么想法吗

您可以尝试将数组定义为scheme id而不是string,通过以下方式进行检查:

$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>";     
}
$scheme_id=[23,24];
//获取所有许可计划的详细信息
$stmt=$pdo->prepare(“从id在(?)中的方案中选择*);
$stmt->execute($scheme\u id);
$schemes=$stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt=null;
foreach($方案作为$方案){
echo$scheme['reference']。“
”; }
您可以尝试将数组定义为方案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>";     
}
$scheme_id=[23,24];
//获取所有许可计划的详细信息
$stmt=$pdo->prepare(“从id在(?)中的方案中选择*);
$stmt->execute($scheme\u id);
$schemes=$stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt=null;
foreach($方案作为$方案){
echo$scheme['reference']。“
”; }
你应该这样试试

$id= array();
//add value into array like $id[]=23; $id[]=24
//convert the array to a csv string for use with the query
$id= implode(',', $id);
$stmt = $pdo->prepare("SELECT * FROM schemes WHERE id IN(?)");
$stmt->execute($id);
$schemes = $stmt->fetchAll(PDO::FETCH_ASSOC);

你应该这样试试

$id= array();
//add value into array like $id[]=23; $id[]=24
//convert the array to a csv string for use with the query
$id= implode(',', $id);
$stmt = $pdo->prepare("SELECT * FROM schemes WHERE id IN(?)");
$stmt->execute($id);
$schemes = $stmt->fetchAll(PDO::FETCH_ASSOC);

从以下文件中:

多个值不能绑定到单个参数;例如,在in()子句中,不允许将两个值绑定到单个命名参数

在这种情况下,不能使用语句准备;您必须将这些值连接到查询字符串中。我假设
$scheme\u id
是从实际应用程序中的某种用户输入动态获取的,因此请确保正确地转义它

$stmt = $pdo->prepare("SELECT * FROM schemes WHERE id IN($scheme_ids)");
$stmt->execute();

从以下文件中:

多个值不能绑定到单个参数;例如,在in()子句中,不允许将两个值绑定到单个命名参数

在这种情况下,不能使用语句准备;您必须将这些值连接到查询字符串中。我假设
$scheme\u id
是从实际应用程序中的某种用户输入动态获取的,因此请确保正确地转义它

$stmt = $pdo->prepare("SELECT * FROM schemes WHERE id IN($scheme_ids)");
$stmt->execute();

Jamie Moffat,如果它解决了您的问题,请接受答案,谢谢此返回错误:
注意:数组到字符串转换在/home/。。。在第14行,但是没有从DB中选择任何内容。Jamie Moffat,如果它解决了您的问题,请接受答案,谢谢。此返回错误:
注意:在/home/…中进行数组到字符串的转换。。。在第14行,但不从数据库中选择任何内容。