数据库插入循环执行的次数超过应有的次数

时间:2011-05-11 20:48:55

标签: php loops

O.K。这是一些较旧的代码,但它插入的数量超过应有的数量。在我清理它之前,我试图理解为什么。现在$ _POST [tags]只有1个值。我正在爆炸并循环。但是对于底部的insert3语句是插入零的行作为值。

我为什么不知所措。

if($_POST['sec'] == "next") {

      $bloguser = $_POST['bloguser'];
      $blogpassword = $_POST['blogpassword'];
      $blog = $_POST['blog'];

mysql_select_db($database) or die ("Unable to select database!"); 
$insert = mysql_query("INSERT INTO blogs (id, url, user, pass, dname, islocal, cat2post) VALUES ('', '$blog', '$bloguser', '$blogpassword', '','NO','$_POST[cat2blog]')")or die( 'Error: ' . mysql_error());
$taggit1 = mysql_insert_id();

$page->content .= "<p class=\"alert\">Success - External blog Added!</p>";


$tags  = $_POST['tags'];
$pieces = explode(",", $tags);
foreach ($pieces as $l){
$l = trim($l);  
$query = "SELECT id FROM tags WHERE tag = '$l'";
$result = mysql_query($query) or die( "Error: " . mysql_error() . " in query $query");
$row = mysql_fetch_array($result);
$taggit2 = $row[0];

if ($taggit2 == '') {
$insert2 = mysql_query("INSERT INTO tags (id, tag) VALUES ('','$l')")or die( 'Error: ' . mysql_error());
$taggit2 = mysql_insert_id();
$page->content .= "<p class=\"alert\">This tag didn't exist - so I inserted a new tag</p>";
}



$insert3 = mysql_query("INSERT INTO blogstags (id, tag_id, blogstags_id) VALUES ('','$taggit2','$taggit1')")or die( 'Error: ' . mysql_error());
$page->content .= "<p>Inserted one    </p>";
}


/// some page content crap that doesn't matter to the problem goes here///

}

像这样输入 - 第二条记录是正确的。第一个就是不应该插入 -

id    tag_id   blogstags_id
1      1           0
2      1           6

我认为问题出在我爆炸的地方

$tags  = $_POST['tags'];
$pieces = explode(",", $tags);
foreach ($pieces as $l){
$l = trim($l); 

但POST值只是一个单词,为什么它会在循环中运行两次?

1 个答案:

答案 0 :(得分:0)

如果$_POST['tags'];不包含,,则$pieces = explode(",", $tags);将是只包含一个元素的数组。

我建议print_r($pieces);进行健全检查,确认这是真的。