2012-04-21 75 views
1

只是在做MySQL的使用工作正常的INSERT ...IF NOT EXISTS是否存在mySQL查詢?

mysql_query("INSERT INTO FLIGHTS_AVAILABLE 
(aircraftID, aircraftType, maxSeats) VALUES('$theaircraftID', '$addType', '$maxCapacity'  ) ") 
or die(mysql_error()); 

echo '<p>'; 
echo "The following details were added into the database:"; 
echo "<hr>"; 

    echo $theaircraftID . $addType . $maxCapacity; 

這工作得很好,但是我在網上看了看,雖然我已經聽到了一個名爲IF NOT EXISTS功能,目前還沒有很好的解釋網上有關它的使用。如果例如$ theaircraftID = 10,並且數據庫中已經存在一行aircraftID = 10的行,那麼查詢將不會運行?是否有無論如何,我可以在上面運行此查詢。

感謝您可能能夠提出任何幫助,

湯姆

回答

3

'FLIGHTS_AVAILABLE'.'aircraftID'添加UNIQUE INDEX。 MySQL將用相同的值阻止額外的INSERT。此外,您可以使用ON DUPLICATE KEY EXISTS運行UPDATE,然後INSERT給出DUPLICATE KEY約束錯誤。

+0

當然,我會放棄這一點,謝謝。有無論如何,我可以迴應我自己的錯誤消息以及如果由於唯一索引而不執行INSERT消息?謝謝@FritsvanCampen - Tom Gillespie 6秒前編輯 – 2012-04-21 16:11:07

+0

是的,您可以使用'mysql_errno'和'mysql_error'來獲取有關錯誤的詳細信息。重複鍵約束錯誤具有唯一的「errno」。這應該給你足夠強大的異常處理。 – Halcyon 2012-04-21 16:17:42

+0

@FritzvanCampen也許我沒有很好地解釋自己,我的意思是,如果由於唯一索引導致的mysql_error導致INSERT無法正常工作,我可以說echo「Values added」; – 2012-04-21 16:21:01