我正在尝试从表单中的字段插入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>
在我的模型中,我需要获取帖子并将它们存储在数据库中。我做了以下
public function fill_family(){
$number = $this->input->post('number');
$data = array(
'user_id' =>$this->session->userdata('user_id')
);
for($i=1; $i<=$number; $i++){
array_push($data, $this->input->post('nom' . $i));
}
$insert_data = $this->db->insert('temp', $data);
//var_dump($data);
return $insert_data;
}
单击表单上的提交时,我在浏览器中收到以下错误。
错误号码:1064
您的SQL语法有错误;查看与您的&gt; MySQL服务器版本对应的手册,以便在{0,1,2)值附近使用正确的语法(&#39; 42&#39;,&#39; samer1&#39;,& #39; samer2&#39;,&#39; samer3&#39;)&#39;在第1行
INSERT INTO
temp
(user_id
,0,1,2)VALUES(&#39; 42&#39;,&#39; samer1&#39;,&#39; samer2&#39 ;,&gt;&#39; samer3&#39;)
我将表格中的列重命名为user_id,0,1和2,因为它在查询中生成,但仍然无效。
我的猜测是,它与不知道列的正确名称有关,所以我在for循环中的模型中做了这个
'nom' . $i => $this->input->post('nom' . $i);
但是我保留了与mysql相同的错误。任何人都可以向我提供我的错误所在的线索吗?
由于
答案 0 :(得分: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++;
}
希望这会奏效!
答案 1 :(得分: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')`
<强>更新强>
请参阅MySQL Identifiers:“标识符可以以数字开头,但除非引用可能不仅仅包含数字。”