3つのフィールドを持つテーブル(myTable)があります。
ID (int), posistion(int), products_id(int)
注文を変更したり、このリストからアイテムを削除したりできるフォームがあります。ユーザーがリストの編集を終えたら、フォームを送信します。
新しいデータを挿入する前に、テーブルを空にしたい。
だから私は電話します$this->db->empty_table("myTable");
その後、次のように新しいデータを挿入します。
$this->db->insert_batch("jcarousel",$insert);
問題は次のとおりです。私のテーブルは常に空であるため、挿入クエリの後に何とかempty_table()が呼び出されます。明確にするために:コメントアウトすると、挿入クエリは正常に機能します//$this->db->empty_table("myTable");
私はいくつかのことを試したので、私のコードは少し混乱しました。現在、次のようになっています。
public function change_carousel_order($value='')
{
$this->output->enable_profiler(TRUE);
$empty = $this->empty_table();
//$empty = TRUE;
$form = $this->input->post();
//print_r($form['order']);
$insert = array();
foreach ($form['order'] as $key => $value) {
//echo "value: ".$value;
$insert[$key]['product_id'] = $value;
$insert[$key]['posistion'] = $key;
}
echo $this->db->last_query();
if($empty==TRUE)
{
echo "jaaa";
echo $this->insert_change_carausel_order($insert);
}
else{
echo "neee!";
}
echo $this->db->last_query();
//redirect("welcome/jcarousel");
}
public function empty_table($value='')
{
return $this->db->empty_table("jcarousel");
}
public function insert_change_carausel_order($insert=array())
{
return $this->db->insert_batch("jcarousel",$insert);
}
私が間違っていることを見た人はいますか?empty_table()が呼び出された後にcodeigniterがデータを挿入しないのはなぜですか?どんな助けでも大歓迎です。
$ this-> output-> enable_profiler(TRUE); 2つのクエリがあることを示しています。削除クエリは、挿入クエリの後に実際に実行されます
0.0003 DELETE FROM `jcarousel`
0.0002 INSERT INTO `jcarousel` (`posistion`, `product_id`) VALUES (0,'755'), (1,'835'), (2,'838')
そして別の結果は同じセットアップです:
0.0006 DELETE FROM `jcarousel`
0.0002 INSERT INTO `jcarousel` (`posistion`, `product_id`) VALUES (0,'755'), (1,'835'), (2,'838')