我已经制作了以下脚本来检查另一个表中是否存在某篇文章,如果它确实存在,那么它应该回应该文章是否存在,如果它不存在则将文章ID和文章名称添加到另一个表中。我遇到的问题是,如果我清除workshoptabs表并运行更新脚本,它会创建所有文章ID /名称,但如果我向dbel6_content表添加新文章然后再次运行更新脚本,则不会添加新文章到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条并再次运行该脚本,则不会添加它。
答案 0 :(得分: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,如Joseph所述。