ホームページ  >  記事  >  バックエンド開発  >  PDO: exec() の戻り値に関連する問題

PDO: exec() の戻り値に関連する問題

WBOY
WBOYオリジナル
2016-06-13 13:36:501341ブラウズ

PDO::exec() の戻り値に問題があります。
//スクリプトの実行時間を無制限に設定します
set_time_limit(0);

//PDO を使用して pgsql 接続を作成します
try {
$pgLink = new PDO('pgsql : host=localhost port=5432 dbname=db2 user=root パスワード=111111');
}catch(Exception $e) {
echo $e->getMessage();
}

//SQL 修正文の定義
$sql = "UPDATE trade.membership SET 性別=1,birth_type=0,name='wsy',birthday='2011-01-01',email='', join_date = '2011-01-02'、status=1、address='aaaa'、id_number='25454'、postcode='100031'、phone='666'、type_id=1 WHERE mobile='110';";

//SQL ステートメントを実行
$result = $pgLink->exec($sql);

//SQL 結果を出力
echo $result.'   ; '.$sql;

出力結果:
1 UPDATE trade.membership SET 性別=1、birth_type=0、name='wsy'、birthday='2011-01-01'、email= ' '、join_date='2011-01-02'、status=1、address='aaaa'、id_number='25454'、postcode='100031'、phone='666'、type_id=1 WHERE mobile='110' ;

問題は次のとおりです:
このテーブルには mobile='110' 行がまったくありません。ローカル SQL サーバーで $sql ステートメントを実行しても、「影響を受ける行は 0 行」になります。
しかし、なぜプログラムの結果は「1」なのでしょうか? PDO::exec() の出力結果は、追加、削除、または変更された影響を受ける行の数ではないでしょうか?

-----解決策---------
これは PDO のバグであるはずです。前処理を使用してから、PDO::rowCount() を使用して正しく処理してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。