使用循环插入多行时获取成功确认

时间:2014-01-13 07:52:53

标签: php mysql sql codeigniter

当我使用循环在MySql数据库表中插入表行时,如何获得成功确认?

我的代码如下(我正在使用CodeIgniter):

foreach($bookids as $key=>$bookid)
{
    $this->db->query("INSERT INTO `book` (`invoice_id`,`item_id`,`quantity`,`price`) VALUES (`$invoice_id`,`$product_id`,`$product_quantitys[$key]`,`$product_prices[$key]`)");        
}

我想在成功插入所有行后得到确认。

2 个答案:

答案 0 :(得分:4)

您可以使用affected_rows()功能检查插入(或更新)的数据。

$actual_count = count($bookids); // array of book ids
$inserted_count = 0;

foreach($bookids as $key=>$bookid)
{
    $this->db->query("INSERT INTO `book` (`invoice_id`,`item_id`,`quantity`,`price`) VALUES (`$invoice_id`,`$product_id`,`$product_quantitys[$key]`,`$product_prices[$key]`)");        
    if($this->db->affected_rows()>0) // data inserted, so it will return 1
    {
      $inserted_count ++;
    }
}

if($actual_count  == $inserted_count )
{
  //throws success message to controller
}
else
{
   // throws error message with mismatch record count
}

答案 1 :(得分:1)

$success = true;    

foreach($bookids as $key=>$bookid)
{
    if ($this->db->query("INSERT INTO `book` (`invoice_id`,`item_id`,`quantity`,`price`) VALUES         (`$invoice_id`,`$product_id`,`$product_quantitys[$key]`,`$product_prices[$key]`)"))
    {} else { $success = false}
}

if ($success){
   code on success...
}

说明:如果您的查询成功无效,如果其中一个查询失败,则标记$success将为false,您将知道出现了问题