我正在插入标记。所以,我有几个标签需要插入到mysql中。我先分解它,然后我有一个数组[0],数组[1],数组[2]。。。。。。。,并且我需要SELECT*FROM表WHERE key=array[0],key=array[1]。。。。。。。,我不想这样做,而是想使用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]);
}
顺便说一句,在您的代码中,您试图选择一个固定在WHERE
谓词中的列(key
),这可能不是您想要的,因为您将从一开始就获得您在查询参数中输入的数据。
对于INSERT
:
请参阅此问题。
我建议IN STATION(IN运算符允许您在WHERE子句中指定多个值。)
$in = join(',', array_fill(0, count($tag), '?'));
$stmt = $db->prepare ("SELECT key FROM keyword WHERE key IN ($in)");
$stmt->execute($tag);
问题是要像参数一样多打问号,所以如果我的代码是动态的,就使用它,否则你可以硬编码