我正在尝试将数据插入到for
循环中的表中:
public function insertprolist()
{
for ($i = 1; $i < $this->input->post('numrows'); $i = $i + 1)
{
$data = array(
'productname' => $this->input->post('proname'+$i),
'quantity' => $this->input->post('quantity'+$i),
'price' => $this->input->post('price'+$i),
'amount' => $this->input->post('amount'+$i)
);
return $this->db->insert('purchaseprolist', $data);
}
}
我收到了错误。
它没有插入数据库表。
我添加了包含proname1
,quantity1
等名称的输入字段的新行,而第二行的输入名称属性将生成为proname2
,quantity2
它继续。
我正在检索另一个名为numrows
的输入中的行数。
现在我想在模态文件中访问这些输入。
答案 0 :(得分:2)
for ($i = 1; $i < $this->input->post( 'numrows' ); $i++)
{
$data = array(
'productname' => $this->input->post( 'proname' . $i ),
'quantity' => $this->input->post( 'quantity' . $i ),
'price' => $this->input->post( 'price' . $i ),
'amount' => $this->input->post( 'amount' . $i )
);
$this->db->insert('purchaseprolist', $data);
}
这很可能会工作但是它为每一行做一个插入,你最好看一下构建一个值数组并使用insert_batch()
一次完成整个事情。
更好的选择:
for ($i = 1; $i < $this->input->post( 'numrows' ); $i++)
{
$data[] = array(
'productname' => $this->input->post( 'proname' . $i ),
'quantity' => $this->input->post( 'quantity' . $i ),
'price' => $this->input->post( 'price' . $i ),
'amount' => $this->input->post( 'amount' . $i )
);
}
$this->db->insert_batch( 'purchaseprolist', $data );
这将执行单个数据库插入查询,而不是循环行数并执行每行插入。相同的数据将更有效地提交给数据库。
答案 1 :(得分:0)
也许你应该使用
设置"+"
= "."
PHP会理解这是匹配。
for ($i = 1; $i < $this->input->post('numrows'); $i = $i + 1)
{
$data = array(
'productname' => $this->input->post('proname'.$i),
'quantity' => $this->input->post('quantity'.$i),
'price' => $this->input->post('price'.$i),
'amount' => $this->input->post('amount'.$i)
);
return $this->db->insert('purchaseprolist', $data);
}
因为你的问题不明确,所以我只能这样向你解释。
答案 2 :(得分:0)
也许问题是你在forloop中尝试return
。因此,请尝试将其删除,如下所示
public function insertprolist()
{
for ($i = 1; $i < $this->input->post('numrows'); $i = $i + 1)
{
$data = array(
'productname' => $this->input->post('proname'+$i),
'quantity' => $this->input->post('quantity'+$i),
'price' => $this->input->post('price'+$i),
'amount' => $this->input->post('amount'+$i)
);
$this->db->insert('purchaseprolist', $data);
}
}
答案 3 :(得分:-1)
在PHP中,你不能使用+符号进行连接,你需要在这里使用(。)dot:
$data = array(
'productname' => $this->input->post('proname'.$i),
'quantity' => $this->input->post('quantity'.$i),
'price' => $this->input->post('price'.$i),
'amount' => $this->input->post('amount'.$i)
);
第二 ,您正在使用return,这将在ist迭代后停止您的函数,您无法在for
循环内使用它。
第三次 ,在插入之前,请尝试检查您的帖子值,这样可以帮助您了解您在尝试的内容。 < / p>
print_r($_POST); // before for loop start.
第四 ,而不是多次执行查询,我建议您使用batch_insert()
,这会对您有所帮助:http://www.codeigniter.com/userguide3/database/query_builder.html < / em>的