これがテーブル構造です
CREATE TABLE IF NOT EXISTS `result` (
`res_id` int(11) NOT NULL AUTO_INCREMENT,
`s_id` int(10) NOT NULL,
`i_id` int(6) NOT NULL,
`r_status` text NOT NULL,
`r_score` decimal(6,0) NOT NULL,
PRIMARY KEY (`res_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
私は解決策を探し、さまざまな機会に試してみました。テーブルを最初から作成し、ドロップしてインポートし直し、インデックスをチェックしました。ご覧のとおり、id の名前を res_id に変更しましたが、ブラウザーで実行すると、エラーにはまだ r_id が表示されます。
違いが生じる場合、id が自動インクリメントに設定されていない場合、同じエラーがポップアップします。
データベースに挿入するページのコード スニペットを次に示します。
//retrieve existing r_id
$sql_res = "SELECT res_id FROM result ORDER BY res_id DESC LIMIT 1";
$query_res = mysql_query($sql_res) or die("MySQL Error: " . mysql_error());
$data_res = mysql_fetch_assoc($query_res);
$resid_count = $data_res['res_id']+1;
//echo "<br>Result: " . $resid_count;
// insert result to table
$sql_result = "INSERT INTO result (res_id, r_score, s_id, i_id) VALUES ('" . $resid_count . "', '" . $correct . "', '" . $id . "', '" . $ins_id . "')";
mysql_query($sql_result) or die ("Error: " . mysql_error());
編集:皆さんが提案したようにコードを変更しました。INSERT から res_id を取り出しました。r_idのエントリが重複しています。試行錯誤を重ね、同じ構造の別のテーブル「score」を作成して「result」を置き換えました。同じテーブル名が問題を引き起こしているのではないかと考えていました (ページを何度も実行すると、この問題が発生する可能性がありますか?)。スコア表と同じ結果。
どんな助けでも大歓迎です。ここで立ち往生していて、プロジェクトを進めることができません。ありがとう。
アティカ