1

次のコードでテーブルを更新しようとしていますが、常ににアクセスrowcount0てテーブルが更新されません。phpmyadminを使用すると、同じクエリでテーブルが更新されます。

$query="UPDATE userprofile SET password=:newpassword WHERE userid=:userid AND password=:oldpassword";
$queryprepare=parent::getPreparedQuery($query);
$queryprepare->bindParam(':newpassword',$newpassword);
$queryprepare->bindParam(':userid',$userid);
$queryprepare->bindParam(':oldpassword',$oldpassword);
$queryprepare->execute();
4

1 に答える 1

0

私は PDO の専門家ではありませんが、テーブルを変更しない通常の UPDATE はcommitの欠落に依存します。

どの DB (および ISAM エンジン) を使用していますか?

編集

PDO マニュアルを見て、このnils andre の投稿と、私の googelian maily accouを見つけました: 接続の正しいエンコーディングについて。問題を回避するために、通常はすべてのチェーン (html-page、db-connection、db-column-type) を同じエンコード (通常は UTF-8) で設定します。

あなたの場合、パスワードに「バイナリ」文字が含まれている場合、場所が一致しないため、更新はありません。

私の仮説を検証するには、古いパスワードの条件を削除するだけです。

于 2012-06-30T10:33:02.063 に答える