いくつかのデータベース操作を実行する必要があるカスタム CodeIgniter ライブラリがあります。
データベースにアクセスするには、StackOverflow で学んだ次のコマンドを実行します。
$this->CI =& get_instance();
このコマンドが機能するため、機能していることはわかっています。
$drop_query = "DELETE FROM product_images WHERE product_id = " . $this->CI->db->escape($product_id);
$this->CI->db->query($drop_query); // Tested, this works.
ただし、insert_batchはまったく機能しません。FALSE は返されず、エラーもありません... nothin. それはただ死ぬ。
$master_insert_array = array(
array(
'product_id' => $product_id,
'thumb_type' => 'original',
'filename' => $orig_file_name
),
array(
'product_id' => $product_id,
'thumb_type' => 'small',
'filename' => $small_file_name
) // Truncating the rest of this...
);
error_log("update_product_image_db: Insert_Batch Coming up:");
$batch_success = $this->CI->db->insert_batch('product_images', $master_insert_array);
error_log("\n\n".$this->CI->db->last_query()."\n");
*編集: $product_id が外部キー制約に失敗し、batch_insert が失敗したことが判明しました。*
2 番目の error_log は、失敗した後に実行されることはありません。スクリプトは死ぬだけです。
では、insert_batch が正しく FALSE、エラー、または完全な失敗以外の何かを返すようにするにはどうすればよいでしょうか?
*UPDATE: これを try/catch ブロックに入れてみましたが、成功しませんでした。外部キー制約に失敗すると、スクリプト全体が中止されます。私の現在の意見では、insert_batch はよく書かれていない関数です*
ありがとう!