Вставка базы данных в цикл выполняется больше раз, чем следует - PullRequest
0 голосов
/ 12 мая 2011

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 голосов
/ 12 мая 2011

Если $_POST['tags']; не содержит ,, тогда $pieces = explode(",", $tags); будет массивом только с одним элементом.

Я предлагаю сделать print_r($pieces); для проверки работоспособности, которая верна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...