0

次のスクリプトを作成して、記事が別のテーブルに存在するかどうかを確認します。存在する場合は、記事が存在することをエコーすることになっています。存在しない場合は、記事IDと記事名を別のテーブルに追加します。私が抱えている問題は、workshoptabsテーブルをクリアして更新スクリプトを実行すると、すべての記事ID /名前が作成されることですが、dbel6_contentテーブルに新しい記事を追加してから、更新スクリプトを再度実行しても、追加されません。ワークショップタブへの新しい記事。また、workshoptabsからレコードを削除してスクリプトを実行しても、レコードは再追加されませんが、テーブル全体をクリアすると、すべてが再インポートされます。

$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

Workshoptabsテーブルをワイプして、取得したものをすべて再インポートすると:追加された記事:16-追加された記事:17-追加された記事:18-追加された記事:19-追加された記事:20-追加された記事:21-追加された記事:22-追加された記事: 23-追加された記事:24-追加された記事:25-追加された記事:26-追加された記事:27-追加された記事:34-

しかし、たとえば、記事21を削除してスクリプトを再度実行しても、スクリプトは追加されません。

4

1 に答える 1

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 を調べることを検討してください。

于 2013-01-21T20:10:41.430 に答える