Php脚本未按预期导入新记录

Php脚本未按预期导入新记录,php,mysql,while-loop,defaultifempty,Php,Mysql,While Loop,Defaultifempty,我制作了下面的脚本来检查一个项目是否存在于另一个表中,如果存在,则应该回显该项目存在,如果不存在,则将项目id和项目名称添加到另一个表中。我遇到的问题是,如果我清除workshoptabs表并运行更新脚本,它将创建所有文章id/名称,但如果我将新文章添加到dbel6_内容表,然后再次运行更新脚本,它不会将新文章添加到workshoptabs。此外,如果我从workshoptabs中删除一条记录并运行脚本,它不会重新添加它,但如果我清除整个表,它会重新导入所有内容 $resultB = mysql

我制作了下面的脚本来检查一个项目是否存在于另一个表中,如果存在,则应该回显该项目存在,如果不存在,则将项目id和项目名称添加到另一个表中。我遇到的问题是,如果我清除workshoptabs表并运行更新脚本,它将创建所有文章id/名称,但如果我将新文章添加到dbel6_内容表,然后再次运行更新脚本,它不会将新文章添加到workshoptabs。此外,如果我从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存在17存在20存在24存在25存在26存在27存在34存在

如果我擦除workshoptabs表并重新导入我得到的所有内容: 增条:16条增条:17条增条:18条增条:19条增条:20条增条:21条增条:22条增条:23条增条:24条增条:25条增条:26条增条:27条增条:34条-


但是,例如,如果我现在删除第21条并再次运行脚本,它不会添加它。

我建议使用查询的行数来确定记录是否存在:

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

  }

?>

在检查每个条目之前,可能需要清空$articleexists。在找到第一条现有记录后,它看起来将不再为空。。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果你选择PDO,.^^^^^^^这是真的,对于普通的S.O用户来说,一天看10次它会变得有点乏味。你可以这么说,如果你了解PDO并有时间学习它,我就没有空余时间坐在书前从头开始学习了。@Dagon-我希望我不需要,但这太荒谬了。我看到每天都有数百个新问题通过
mysql.*
函数发布在这里。寻找参考文献的人认为这是一个权威的资源,如果他们看到这些功能的讨论而没有通知,他们会认为使用它们是可以的。无论你(OP)有多少时间,这都是必须的。放下你正在做的一切,学习PDO/MySQLi。谢谢,这会添加一堆空白记录,如果我再次运行它,会添加一堆更多的空白记录:-(我最初忘记给articleid和articlename赋值。我在编辑中添加了它们。这有帮助吗?非常感谢您的帮助,这非常有效。我将尝试学习mysqli,因为PDO看起来像一场完全的噩梦,mysqli看起来有点熟悉:-).我理解这种不情愿,但也没那么糟糕。我一直在使用mysql语句,在当前的项目中,我正在切换到PDO。在我看来,优势大于学习曲线的困难。你甚至可能会发现它让事情变得更容易!