Php 在(?)中的id工作时选择多个记录,使用(?)寻找PDO解决方案

Php 在(?)中的id工作时选择多个记录,使用(?)寻找PDO解决方案,php,pdo,fetch,fetchall,Php,Pdo,Fetch,Fetchall,我已经尝试了很多不同的潜在答案,这些答案都是在这个网站上发布的前一个问题和其他问题中提出的,但都没有用。我提出了一个使用SELECT语句选择多行并避免sql注入的有效解决方案(请参见下面的代码),它定义了使用IN()的ID数,即IN(?,)。此解决方案的问题是,我不知道如何在中指定“”的数量,因为它可能会根据查询而有所不同。我一直在寻找一个解决方案,将工作使用(?)可以处理多个ID。Wierd,我怀疑我在和中设置它的方式,虽然fetch()可以用于检索多行,但fetchAll()不能 任何关于如

我已经尝试了很多不同的潜在答案,这些答案都是在这个网站上发布的前一个问题和其他问题中提出的,但都没有用。我提出了一个使用SELECT语句选择多行并避免sql注入的有效解决方案(请参见下面的代码),它定义了使用IN()的ID数,即IN(?,)。此解决方案的问题是,我不知道如何在中指定“”的数量,因为它可能会根据查询而有所不同。我一直在寻找一个解决方案,将工作使用(?)可以处理多个ID。Wierd,我怀疑我在和中设置它的方式,虽然fetch()可以用于检索多行,但fetchAll()不能

任何关于如何在(?)或两个中使用它的想法都包括基于查询的正确数量的“?”

以下作品

$varID = "100, 118";
$ids = explode(',', $varID);

$stmt = $conn->prepare('SELECT * FROM table WHERE id IN(?,?)');
$stmt->execute($ids);
while($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
    mail($result['contact']." <".$result['email'].">", "My Subject", "My Message", $headers);
}
$varID=“100118”;
$ids=分解(',',$varID);
$stmt=$conn->prepare('SELECT*,从id所在的表中选择?,);
$stmt->execute($id);
而($result=$stmt->fetch(PDO::fetch_ASSOC)){
邮件($result['contact'].''、“我的主题”、“我的邮件”、$headers);
}

$ids=['1','2','3',…]


“…WHERE id IN(“.infrade(“,”,$ids)。”)order by…

类似,如果条件数量未知,则必须在运行时生成条件数量:编写一个小视图以生成
列表(或仅展平数组),然后使用当前的whileloop@Norbert范诺伯伦-谢谢你的回复。根据我所读的内容,在语句中包含占位符以防止Sql注入非常重要。你对Joaquin Cicetti的回答有什么看法?您能以这种方式安全地使用变量吗?您使用PDO的路径是正确的。Joaquin Cicetti的答案可以有SQL注入作为结果,只需添加一个项数并内爆一个
数组(或者使用一个简单的循环来做同样的事情),然后应用关联的PDO解决方案就更好了。我(和这里的几十个人)很高兴看到您已经选择使用PDO。继续:)谢谢你的回复。在语句中包含一个变量(如您所定义)与占位符对sql注入安全吗?@Spaceman当然不安全,这使得这个答案是错误和有害的。如果您复制并粘贴这段代码…显然它容易受到入侵,但答案是无害的。您应该检查参数以避免sql输入。。。