3

$this->db->affected_rows()毎回返されるcodeigniter で削除された行の数を知る方法。成功時または失敗時も

4

5 に答える 5

4
$this->db->where($conditions)->delete('mytable');
return $this->db->affected_rows(); 
于 2012-05-25T11:19:35.540 に答える
3

$this->db->affected_rows() が毎回返される場合、codeigniter で削除された行の数を知る方法。成功時でも失敗時でも

私は CodeIgniter を使用しませんが、通常はaffected_rows( )影響を受けた行数を返す必要があります。つまり、クエリが成功した場合、常に整数でなければなりません。0 が返された場合、行は削除されません。> 0 の場合、その番号が削除されます。

于 2012-05-25T11:19:36.353 に答える
1

codeigniters の Web サイトによると、正しい量の行を返すハックがあり、デフォルトでオンになっています。

http://codeigniter.com/user_guide/database/helpers.html

于 2012-05-25T11:18:23.520 に答える
1

Codeigniter ユーザーガイドによると、正しい行数が返されます。

「注: MySQL では、"DELETE FROM TABLE" は影響を受ける 0 行を返します。データベース クラスには、影響を受ける行の正しい数を返すことを可能にする小さなハックがあります。デフォルトでは、このハックは有効になっていますが、データベース ドライバーでオフにすることができます。ファイル。"

したがって、これは機能するはずです:

 $this->db->delete('1', 'your_table');
 echo ($this->db->affected_rows()." rows were deleted");

うまくいかない場合は、非理想的な回避策としてこれを実行してください

$count = $this->db->count_all('your_table');
$this->db->delete('1', 'your_table');
$new_count = $this->db->count_all('your_table');
if ($new_count > $count)
{
    echo (($new_count-$count)." rows was deleted");
}
else
{
    echo "nothing deleted";
}
于 2012-05-25T11:22:30.867 に答える
0

例を挙げて具体的に説明すると役立ちます...しかし、削除前と削除後に SELECT COUNT(*) を実行して、2 つの結果を比較することができます。

于 2012-05-25T11:20:42.593 に答える