CI でアプリを作成しています。アップロード フォームからデータベースに画像パスを挿入するモデルがあります。
このコードは私のローカルホスト環境では 100% 正しく動作しますが、リモート サーバーで実行すると失敗します。
Error Number: 1062
Duplicate entry '89-ci/flatfee/uploads/37' for key 'PRIMARY'
アイデアは、listingid を image_path にマップする image_map_table を使用することです。そのため、listingid は各イメージ パスのテーブルで数回繰り返される必要があるため、エントリが重複します。以下は、モデル内の関数です。
function insert_paths($params, $transID){
$lid = $this->getListingID($transID);
if($lid != false) {
$i = 0;
foreach ($params['image_paths'] as $value) {
$sql = "INSERT INTO listing_image_map(idlisting, image_path) VALUES(".$lid.", '".$value."')";
$q = $this->db->query($sql);
$i++;
}
if(sizeof($params['image_paths']) == $i ){
return true;
}
} else {
return false;
}
}
$params は、コントローラーから渡された、アップロード フォームからのすべての画像パスの配列です。エラーと、それが基本レベルで発生している理由を理解していますが、これがリモートサーバーではなくローカルホストで機能する理由と、可能な解決策についてのより詳細な説明も必要です。
ありがとう。
編集: Ashwini Dhekane のおかげで問題が見つかりました。ファイル パスは配列から作成されるため、サーバー上のデフォルトのファイル パスはローカル環境よりも長い構造になっているため、フォルダー構造の作成に使用されるインデックスをリモート サーバーでは増やし、ローカルでは減らす必要がありました。環境 (したがって、現在、作業しているサーバーに応じてコメントを付けたりコメントを外したりするコードのセットが 2 つあり、少し面倒ですが、この部分に取り組む必要があるのはあと数日だけです。)
Ashwini さん、ありがとうございます。