2015-01-16 47 views
0

我有這樣的查詢:如果INSERT IGNORE回顯「查詢被忽略」? (MySQL的/ PHP)

$query="INSERT IGNORE INTO mytable (key, word1, word2) VALUES (1, 'abc', 'def')"; 

而且我想以某種方式「捕獲」如果查詢被忽略,因爲主鍵已經存在。

是否有任何要做「if」語句,所以我的程序可以通知用戶該查詢被忽略?

+0

你能發佈更多的上下文而不僅僅是一行嗎? PHP確實支持控制邏輯,但沒有看到你的查詢結果將如何應用,很難確定一個正確的解決方案。 –

+0

做一個正常的插入並檢查錯誤不是更好嗎?另請注意,「如果使用IGNORE關鍵字,則在執行INSERT語句時發生的錯誤將被忽略。」 http://dev.mysql.com/doc/refman/5.5/en/insert.html –

回答

2

我使用mysql_affected_rows來解決這個問題,以檢查查詢是否沒有行受到影響。

if($productquery&&mysql_affected_rows($conn)>0){ 

    echo "Success.";  
    echo mysql_affected_rows($conn); //returns 1 

}else{ 

    echo "Some error." . mysql_error(). " ".mysql_affected_rows($conn); //returns 0 affected rows since it was ignored 

} 
1

問題是當你特別忽略錯誤,那麼你沒有得到它們。因此,您必須刪除IGNORE並改爲收集錯誤。

你不會在你的情況下得到任何錯誤。