codeigniterとSQLServerでaffected_rows()

codeigniterのバグっぽい。

INSERTやUPDATE後の影響行を取得する関数を使っても値が取れない。

system

∟database

 ∟drivers

  ∟sqlsrv

   ∟sqlsrv_driver.phpの274行目辺り、

affected_rows() の処理を以下のように修正。

return @sqlrv_rows_affected($this->conn_id);

return sqlsrv_rows_affected($this->return_id);

そして146行目辺りの_execute()で、

$sql = $this->_prep_query($sql);

この下に以下を追記。

if(stripos($sql,'UPDATE') !== FALSE || stripos($sql,'INSERT') !== FALSE) {
  return sqlsrv_query($this->conn_id, $sql, null, array());
}

これで解決。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です