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.'-';  
    }

  }

?>

如 Joseph 所述,考虑研究 PDO 或 MySQLi。

于 2013-01-21T20:10:41.430 回答