Php 我应该如何在selectdatamysql中使用for(I++)?可能吗?

Php 我应该如何在selectdatamysql中使用for(I++)?可能吗?,php,mysql,arrays,for-loop,Php,Mysql,Arrays,For Loop,我正在做标签插入。所以,我有几个标签需要插入到mysql中。我首先分解它,然后我有一个数组[0]、数组[1]、数组[2]……我需要从表中选择*其中key=array[0]和key=array[1]以及key=array[2]……而不是这样做,我想使用I++,但是它不起作用,我不知道为什么?救命啊!谢谢 对于一个选择: 首先构造SQL代码: $stmt = 'SELECT columns FROM keyword WHERE key = :tag0'); for ($i = 1; $i <

我正在做标签插入。所以,我有几个标签需要插入到mysql中。我首先分解它,然后我有一个数组[0]、数组[1]、数组[2]……我需要从表中选择*其中key=array[0]和key=array[1]以及key=array[2]……而不是这样做,我想使用I++,但是它不起作用,我不知道为什么?救命啊!谢谢

对于一个选择: 首先构造SQL代码:

$stmt = 'SELECT columns FROM keyword WHERE key = :tag0');
for ($i = 1; $i <= 9; $i++){
  $stmt .= ' OR key = :tag' . $i;
}
然后填写参数:

$stmt = $db->prepare($stmt);
for ($i = 0; $i <= 9; $i++){        
  $stmt->bindParam(':tag'+$i, $tag[$i]);
}
顺便说一下,在您的代码中,您试图选择一个列键,该列键在WHERE谓词中是固定的,这可能不是您想要的,因为您将获得您在查询参数中输入的数据

插入: 请参见。

我建议IN运算符允许您在WHERE子句中指定多个值

$in = join(',', array_fill(0, count($tag), '?'));
$stmt = $db->prepare ("SELECT key FROM keyword WHERE key IN ($in)"); 
$stmt->execute($tag);

关键是要把参数打上尽可能多的问号,所以如果代码是动态的,请使用我的代码,否则您可以硬编码。

当您必须插入标记时,为什么要进行选择?如果这是关于从数据库中读取标记,那么选择一个就足够了。我没有粘贴整个代码。对不起,把你弄糊涂了。我需要先做select,然后做if语句和insert。我可以建议您回顾一下您目前提出的问题,看看是否有值得接受的答案,或者至少给出一些缺少的反馈吗?如果你一直问,而没有正确地看答案,人们会开始反对/忽略你。谢谢你的回答。我试过你的密码。但它不起作用。我还尝试将$tag[I]更改为$tag[$I],但它不起作用。谢谢您指出这一点。我想我写代码有点匆忙,没有仔细检查。现在应该是正确的,直到查询中的列名。再次感谢。但您需要将+更改为。用于追加。然后,它起作用了。感谢您的帮助。检查@AmhedDaou的答案,这样更好。