Codeigniter affected_rows 插入行时总是返回 0

Codeigniter affected_rows always returning 0 when rows inserted

我正在对 table 进行插入,只有在更新正确插入时脚本才会继续。

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

在我的应用程序中的其他地方工作得很好,但由于某种原因,它有时不会而且总是 returns 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){

我在 $this->db->insert('tb_order_book_history',$ask_history);

前面添加了 $dump =

仅用于调试以检查输出,returns 正确并且我已经复制了

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

运行 它通过 MySQL 工作台插入它很好,我还检查了 table 在通过此函数 运行 应用程序之后,数据正​​在被插好了。现在,除非我盯着代码看得太久而遗漏了一些非常简单的东西,否则我不知道为什么它会这样。

非常感谢任何想法。

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

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

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