当插入行时,Codeigniter affected_rows总是返回0

时间:2015-05-19 01:05:56

标签: php mysql codeigniter error-handling

我正在对表执行插入操作,只有在更新正确插入时,脚本才会继续。

if($this->db->affected_rows() > 0){}

在我的应用程序中的其他位置完全正常,但由于某种原因,它不会一直返回0

该片段如下

while($asked_order_amount_needed > 0){

$matches_attempted = 0;
$matched_orders = $query->result_array();
foreach($matched_orders as $matched_order){

//we can fill the submitted order completely with a matched order with a higher volume then the ask volume so try this first
if($matched_order['amount'] >= $ask['amount']){


$ask_history = array(
'order_type' => $ask['order_type'],
 'amount' => $ask['amount'],
 'price' => $ask['price'],
 'entry_by' => $ask['entry_by'],
 'status' => 'filled',
 'buy_currency_name' => $ask['buy_currency_name'],
 'sell_currency_name' => $ask['sell_currency_name'],
 'timestamp' => date('Y-m-d H:i:s')
);

$dump = $this->db->insert('tb_order_book_history', $ask_history);
//$sql = $this->db->last_query();

if($this->db->affected_rows() > 0){

我在$dump =

的前面添加了$this->db->insert('tb_order_book_history',$ask_history);

仅用于调试以检查输出,返回true并且我已复制<{p}}的$sql

$sql = $this->db->last_query();

通过MySQL工作台运行它,插入它很好,我也通过这个功能运行应用程序后检查表,数据插入正常。现在,除非我长时间盯着代码并且遗漏了一些非常简单的东西,否则我不知道为什么它会像这样。

任何想法都非常感激。

1 个答案:

答案 0 :(得分:1)

而不是$this->db->affected_rows()为什么不与$this->db->insert_id()一起尝试。{p>您可以像

一样使用它
$this->db->insert('tb_order_book_history',$ask_history);
$dump = $this->db->insert_id();

if(!empty($dump) && $dump > 0){
    // your code
}