2016-04-10 18 views
0

フォームのフィールドからmysqlテーブルにデータを挿入しようとしています。フィールドは動的に割り当てられます。つまり、プログラムで名前が設定されます。以下の私のモデルでは、このMySQLデータベースへの値の投稿

<?php for ($i=1; $i<=$nombre_parents_arr; $i++): ?> 

<div class="form-group"> 
    <?php echo form_label('Nom' . " " . $i) ; ?> 
    <?php 
     $data = array(
      'class' => 'form-control', 
      'name' => 'nom' . $i, 
      'rows' => '3', 
      'placeholder' => 'Merci de preciser les infos ici' 
     ); 
    ?> 
    <?php echo form_textarea($data); ?> 
</div> 

のサンプルですが、私はポストを取得し、データベースに格納する必要があります。私は次のことをしました

私のフォームでsubmitをクリックすると、ブラウザに次のエラーが表示されます。

エラー番号:1064

あなたのSQL構文でエラーが発生しています。 > 0、1、2)の近くで使用する正しい構文については、> MySQLサーバのバージョンに対応するマニュアルをチェックしてください。1行目のVALUES( '42'、 'samer1'、 'samer2'、 'samer3') '

tempuser_id、0、1、2)VALUES( '42'、 'samer1'、 'samer2'、> 'samer3')

私はuser_idのために私のテーブルの列の名前を変更し、0 INTO

INSERT、 1と2はクエリで生成されていますが、まだ動作していません。

私の推測では、それが正しい列の名前を知らないに関係しているということですので、私は、forループ

'nom' . $i => $this->input->post('nom' . $i); 

内の私のモデルでこれをやったが、私は、MySQLから同じエラーを保ちました。私の間違いがどこにあるのか誰かが私に手がかりを与えることができますか?

おかげ

+0

数字で始まる列名、またはバッククォートで数字をエスケープする必要があります。 '> 'samer1''とは何ですか? –

+0

私はそれに感謝します。 samer1の前に>のように、それは私が質問のテキストをフォーマットしたときにちょうどタイプミスです:) – samerc

答えて

0

はあなたのクエリを変更-

$q=0; 
foreach($this->input->post('number') as $number) 
{ 
    if($number!='') 
    { 
     $data = array(
     "user_id" =>$this->session->userdata('user_id'), 
     'nom' . $q =>$this->input->post('value_of_html_name_attribute ')[$q], 
     'nom' . $q =>input->post('value_of_html_name_attribute ')[$q], 
     'nom' . $q =>input->post('value_of_html_name_attribute ')[$q], 
     ); 

     $this->db->insert('temp',$data); 
    } 

    $q++; 
} 

これが機能を願っています!

+0

私はこれを試しています。私はあなたが行った編集を見ました。私はforeach引数でエラーが発生しています。私はそれを整理するときに私はあなたに知らせるでしょう。 – samerc

0

INSERT INTO temp (user_id, 0, 1, 2) VALUES ('42', 'samer1', 'samer2', >'samer3')

あなたは数字だけで構成され、列名を使用している場合、彼らはバッククォートで引用されている必要があります。

INSERT INTO temp (user_id, `0`, `1`, `2`) VALUES ('42', 'samer1', 'samer2', 'samer3')` 

UPDATE

MySQL Identifiers参照: "識別子は数字で始めるかもしれませんが、引用されていない限り、単に数字で構成しない場合があります。"

関連する問題