読者です 読者をやめる 読者になる 読者になる

cakephp1.2 queryで更新系SQLを実行した時の戻り値はtrueではない

cakephp

例えば以下のような処理があったとして

<?php
$sql = "update tbl set col = 'aaa', modified = now() where id = ?";

$param = array();
$param[] = $id;

$ret = $this->query($sql, $param);

sqlが正常に完了してもqueryの戻り値は【trueにはならず】に【空のarray()】が返る。
はい、1時間はまりました~。貴重な人生の1時間を無駄にしました~。

空のarrayなので【if(!$ret)】とかで判定してはいけない。sqlに問題があった場合は、【false】が返るので【if($ret===false)】で判定しないといけなかった。
あほすぎる~。自分ぶっ殺して~。

ちなみに影響を受けた行を取得したい場合は【getAffectedRows】を使えばよい。正常でも値に変更が無ければ【0】を返すので注意。まあ例のように更新日時をセットにすれば問題無いと思うが。

低予算で始められるおすすめのFX口座はこちら。
http://s2fx.com/ranking/856.html

参考サイト
php - CakePHP get affected rows of raw SQL statement - Stack Overflow