当我使用循环在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]`)");
}
我想在成功插入所有行后得到确认。
答案 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,您将知道出现了问题