0

codeigniter にこのようなクエリがあります

$update= $this->db->query("update aas set aa = 'aa'  where no=" . $this->db->escape($No) . ""); 

私が走るとき

echo  $this->db->affected_rows()  or echo $this->db->affected_rows($update) 

-1を返します

存在する行を更新すると-1になります更新する行がない場合でも-1が表示されます。

どうした?mysqli ドライバーで codeigniter 2.1.0 を使用しています

私はphpmyadminでそれを実行しようとしましたが、データに従って影響を受ける適切な0または1行が得られます.しかし、codeigniterを介して実行すると、更新する値が変更されたか同じままであっても-1が返されます

クエリは codeigniter で常に true です

codeigniter mysqli ドライバーをオンにしたためですか

4

2 に答える 2

3

「書き込み」タイプのクエリ (挿入、更新など) を実行するときに、影響を受ける行の数を表示します。

参考:こちら.

sqlあなたのステートメントに間違った(引用符)がある(実行されていない)

$update= $this->db->query("update aas set aa = 'aa'  where no=" . $this->db->escape($No) . ""); 

する必要があります

$update = $this->db->query("update aas set aa = 'aa'  where no = '{$this->db->escape($No) }'"); 
echo  $this->db->affected_rows();
于 2012-05-05T14:26:22.660 に答える
0

それは完全にあなた次第ですが、このクエリを CodeIgniter のActive Record Classに変換することもできます。すべてを自動的にエスケープするだけでなく、単純なクエリを簡単に使用でき、SQL ステートメントの引用符が正しくないという潜在的な問題を回避できます。

したがって、アクティブ レコードの場合は次のようになります。

$data = array(
    'aa' => 'aa'
);

$this->db->where('no', $No)->update('aas', $data);

echo $this->db->affected_rows(); // this should return 1 now
于 2012-05-05T22:50:36.407 に答える