2012-10-20 17 views
7

は、私の場合です:UPDATE mysqliクエリが正しく実行されているかどうかを確認するには?ここ

$sql = 'UPDATE user SET password = ? WHERE username = ? AND password = ?'; 
if($stmt->prepare($sql)) { 
    $stmt->bind_param('sss', $newPass, $_SESSION['username'], $oldPass); 
    $stmt->execute(); 
} 

、UPDATEクエリが正常に実行された場合、私は見ることができますか?より正確には、古いパスワードとユーザー名が正しいので、新しいパスワードを保存できるかどうかを確認できますか? 私はこれを行うことによって、試してみた:

$res = $stmt->execute(); 
echo 'Result: '.$res; 

しかし、私は常に取得:

古いパスワードが正しくない場合でも
Result: 1 

答えて

13

行を更新しないクエリはエラー条件ではありません。それは単に何も変更していない、成功したクエリです。更新プログラムが実際に何かを変更したかどうかを確認するには、mysqli_affected_rows()

+0

よろしくお願い致します。 – Dim13i

+0

もう一つの素晴らしい選択肢は[$ mysqli-> info](http://php.net/manual/en/mysqli.info.php)です。私はこれを 'UPDATE'クエリのフィードバックに使用します。 –

2

を使用してください。影響を受ける行の数を取得するには、mysqli_affected_rows()を使用してください。

2

使用しているMySQL拡張機能のaffected_rows機能を使用する必要があります。一致した行がないためにクエリが失敗した場合は0、エラーが発生した場合は-1、変更された行数を示す正の数が返されます。

0
mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50"); 
printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link)); 

これを試してください。

+0

今後この回答を読んでいるユーザーがそれを理解していないか、それを理解するために必要なコンテキストを持っている可能性があるため、これがどの程度正確に機能するかについて説明することは良い考えです。 – orangething

+0

あなたは正しいですが、この場合、最初の質問に基づく私の答え –

関連する問題