我爲用戶訂閱創建了下表。捕獲mysql數據庫錯誤,並在php中使用它
CREATE TABLE IF NOT EXISTS `subscriptions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`subscribed_to` int(11) NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_subscription` (`user_id`,`subscribed_to`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=76 ;
我通過使列user_id
和subscribed_to
獨特不允許相同的行。如果用戶試圖重新提交相同的數據,我得到:
數據庫出錯錯誤編號:1062
重複條目'62 -88' 關鍵 'unique_subscription'
INSERT INTO訂閱( USER_ID,subscribed_to,日期)VALUES( '62', '88', '2011-07-11 19點15分13秒')
行號:330
我通過在嘗試插入數據之前檢查是否存在相同的行來防止數據庫錯誤。
$query = "SELECT COUNT(*) FROM subscriptions WHERE (user_id = '62' AND subscribed_to = '88')";
if ($query > 0)
{
//display already subscribed message
}
else
{
//insert new row
}
數據庫已經檢查了表並返回一個錯誤。上面的select count(*)
查詢似乎是多餘的。我真的需要在我的應用程序中再次檢查表嗎?有沒有辦法在發生數據庫錯誤時捕獲數據庫錯誤,並在我的應用程序中執行某些操作?
如果你有一個想法,請分享一個例子。我不知道這是如何完成的!!
感謝您的回答!你能舉個例子嗎?我不確定這是如何完成的 – CyberJunkie
您使用哪個PHP函數運行查詢?它是'mysql_query'嗎? –
我通過codeigniter框架使用activerecord,我相信使用mysql_query – CyberJunkie