PHP-скрипт не импортирует новые записи, как ожидалось

Я сделал следующий сценарий, чтобы проверить, существует ли статья в другой таблице, если он делает это, он должен повторить, что статья существует, если это не так, то добавляет идентификатор статьи и название статьи в другую таблицу. Проблема, с которой я столкнулся, заключается в том, что если я очищаю таблицу мастер-таблиц и запускаю скрипт обновления, он создает все идентификаторы / имена статей, но если я добавляю новую статью в таблицу dbel6_content, а затем снова запускаю скрипт обновления, он не добавляет новые статьи для мастерских. Также, если я удаляю запись из мастерской и запускаю сценарий, он не добавляет ее заново, но если я очищаю всю таблицу, она снова импортирует все.

$resultB = mysql_query("SELECT * FROM dbel6_content WHERE catid='12'") or die(mysql_error());  
while($rowB = mysql_fetch_array( $resultB )) {
  $articleid = $rowB['id'];
  $articlename = $rowB['title'];

  $resultA = mysql_query("SELECT * FROM workshoptabs WHERE articleid='$articleid'") or die(mysql_error());  
  while($rowA = mysql_fetch_array( $resultA )) {
    $articleexists = $rowA['articleid'];
    echo $articleexists.' Exists';
  }

  if (empty($articleexists)){
    mysql_query("INSERT INTO workshoptabs (articleid, articlename) VALUES ('$articleid', '$articlename')") or die(mysql_error()); 
    echo 'Added Articles : '.$articleid.'-';    
  }
}

Если я запускаю скрипт, я получаю: 16 Exists17 Exists20 Exists24 Exists25 Exists26 Exists27 Exists34 Exists

Если я вытираю таблицу мастер-таблиц и заново импортирую все, что получаю: добавлено статей: 16 добавлено статей: 17 добавлено статей: 19 добавлено статей: 19 добавлено статей: 20 добавлено статей: 21 добавлено статей: 22 добавлено статей: 22 добавлено статей: 23 добавленных статей: 24 добавленных статей: 25 добавленных статей: 26 добавленных статей: 27 добавленных статей: 34-

Но если, например, я сейчас удаляю статью 21 и снова запускаю скрипт, он не добавляет его.

1 ответ

Решение

Я предлагаю использовать количество строк вашего запроса, чтобы определить, существует ли запись:

<?php

  $resultB = mysql_query("SELECT * FROM dbel6_content WHERE catid='12'") or die(mysql_error());

  while($rowB = mysql_fetch_array( $resultB )) {

    $articleid = $rowB['id'];
    $articlename = $rowB['title'];

    $resultA = mysql_query("SELECT * FROM workshoptabs WHERE articleid='$articleid'") or die(mysql_error());

    if (mysql_num_rows($resultA)>0) {
      // exists
      echo $articleid.' Exists';
    } else {
      // doesnt exist
      mysql_query("INSERT INTO workshoptabs (articleid, articlename) VALUES ('$articleid', '$articlename')") or die(mysql_error()); 
      echo 'Added Articles : '.$articleid.'-';  
    }

  }

?>

Подумайте о поиске в PDO или MySQLi, как упоминал Джозеф.

Другие вопросы по тегам