2013-01-21 71 views
0

我做了以下腳本來檢查一篇文章是否存在於另一個表中,如果它應該回顯文章存在,如果它沒有,則添加文章ID和文章名稱到另一個表格。我遇到的問題是,如果我清除workshoptabs表並運行更新腳本,它將創建所有文章ID /名稱,但是如果我將新文章添加到dbel6_content表中,然後再次運行更新腳本,它不會添加新的文章到車間標籤。另外,如果我從workshoptabs刪除一條記錄並運行該腳本,它不會重新添加它,但是如果我清除整個表格,那麼它會重新導入所有內容。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()); 
    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已存在

如果我擦workshoptabs表,並重新導入的一切,我得到: 新增文章:16新增文章: 17添加文章18添加文章19添加文章20添加文章21添加文章22添加文章23添加文章24添加文章25添加文章26添加文章: 27-Added Articles:34-

但是,如果我現在刪除第21條並運行該腳本再次沒有添加它。

+0

可能需要在檢查每個條目之前清空$ article存在。看起來在找到它的第一個現有記錄後,它將永遠不會變空。 – showdev

+0

如何清空它? –

+1

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

回答

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的,由約瑟夫提到。

+0

謝謝,這增加了空白記錄的負載,然後如果我再次運行它添加一個更多的空白記錄載入:-( –

+0

我原來忘記將值分配給articleid和articlename,我在編輯中添加它們,這有幫助嗎? – showdev

+0

非常感謝您的幫助,完美的工作。將嘗試和學習mysqli,因爲PDO看起來像一個完整的噩夢,mysqli是半熟悉的:-)。 –