2014-07-06 36 views
2

我是新來的PHP和我正在開發一個項目使用http://www.php-mvc.net/輕的PHP MVC框架。 我有一個多對多之間的映射關係的兩個表即隱藏php的mysql約束違規警告的選定功能

collection : id 
profile : id 
collection_profile : collection_id <--> profile_id 

我創造,我在collection_profile表中插入一行映射功能。 現在的問題。我創建了collection_idprofile_id的複合密鑰,所以它不會讓我輸入複製組合,這就是我想要的。

我在try,catch塊中添加了這些行。但它仍然在頁面上顯示警告:PDOStatement::execute(): SQLSTATE[23000]: Integrity constraint violation

我找到了error_reporting(E_ERROR)但我無法弄清楚該把這條線放在哪裏。因爲我想禁用該功能的警告。

順便說一句,我這樣做是因爲。我不想檢查行是否存在,然後嘗試插入。我想讓mysql來完成這項工作。

讓我知道你是否需要任何信息。

在此先感謝。

回答

2

在PHP中,鍵入@聲明讓之前禁止任何警告它產生

@$stm->execute(); 

但還是會好得多,如果你明白到底爲什麼發出警告。你可能做錯了什麼。

編輯: 你可以通過執行INSERT IGNORE而不是INSERT抑制在MySQL側這樣的警告,請參閱http://dev.mysql.com/doc/refman/5.6/en/insert.html

+1

我會嘗試。我這樣做是因爲。我不想檢查組合是否存在,然後嘗試插入。我想讓mysql做這件事。 – bitkot

+0

謝謝,它工作。 – bitkot

+1

在這種情況下,由於您使用的是MySQL,因此您可以執行INSERT IGNORE來取消MySQL端的警告 – boobl