我应该如何在 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);
关键是要放置与参数一样多的问号,所以如果它是动态的,请使用我的代码,否则你可以对其进行硬编码。
我正在做标签插入。所以,我有几个标签需要插入 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);
关键是要放置与参数一样多的问号,所以如果它是动态的,请使用我的代码,否则你可以对其进行硬编码。