ユーザからユーザのサブスクリプション用に次の表を作成しました。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 'サブスクリプションINTO
INSERTキーのための'(:
データベースエラーはエラー番号を発生しましたuser_idは、subscribed_to、日付)VALUES( '62'、 '88'、 '2011年7月11日午後07時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'ですか? –
私はmysql_queryを使用すると信じているcodeigniterフレームワーク経由でactiverecordを使用しています – CyberJunkie