我应该如何在 select 数据 mysql 中使用 for (i++)?那可能吗?

How should I use for (i++) in select data mysql? Is that possible?

我正在做标签插入。所以,我有几个标签需要插入 mysql。我先把它炸开,然后我有一个array[0],array[1],array[2].......,我需要SELECT * FROM table WHERE key= array[0] and key=array[1] and key=array[2].......,我不想这样,而是想用i++,但是不行,我不会知道为什么?请帮忙!欣赏!

<?php
       $tag=strtolower($_POST['tag']);
  $tag=explode(" ", $tag);
  include 'db_tag.php';

  for ($i = 0; $i <= 9; $i++){
  
  $stmt = $db->prepare ("SELECT key FROM keyword WHERE key = :tag"); 
   $tag_i=$tag[$i];
      
  $stmt->bindParam(':tag', $tag_i);
                                 }
     $stmt->execute();
  $row_tag = $stmt->fetchALL(PDO::FETCH_ASSOC);
  foreach ($row_tag as $row_tag){
   echo $row_tag['key'];
  }
?>

对于 SELECT :

首先构建您的 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]);
}

顺便说一句,在您的代码中,您正试图 select 固定在 WHERE 谓词中的列 (key),这可能不是您想要的,因为您将获得刚开始时放入查询参数中的数据。

对于 INSERT:

看到这个question

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

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

关键是要放置与参数一样多的问号,所以如果它是动态的,请使用我的代码,否则你可以对其进行硬编码。