0

私のphpコードに関していくつかのphpの問題があります

パスワードを変更するために、データベースを更新する関数を作成します。これが私の構文です

function changePassword($username, $password, $salt){   
$query = "UPDATE mt_user SET password = '". $password ."' , salt = '". $salt . "' WHERE username = '". $username ."'";
$result = mysql_query($query);
    if ($result == false){
        $num_rows = mysql_error();
    } else {
        $num_rows = mysql_num_rows($result);
    }
mysql_close();
return $num_rows;
}

いくつかのスクリプトを作成して、この機能を試します:

    echo changePassword('user1','test','test_salt');

データベースの値は更新されますが、関数はいくつかの警告を表示しています

警告: mysql_num_rows() は、パラメーター 1 がリソースであると想定しており、..... で指定されたブール値です。

コードの何が問題になっていますか? エラーが表示されないためです。

ありがとうございました。

4

3 に答える 3

3

mysql_num_rows()はここで間違った関数です。

結果セットから行数を取得します。このコマンドは、実際の結果セットを返すSELECTSHOWなどのステートメントに対してのみ有効です。

変更された行数を確認するには、 を使用しますmysql_affected_rows()

$num_rows = mysql_affected_rows();

mysql_*新しいコードで関数を使用しないでください。それらはもはや保守されておらず、公式に非推奨です赤いボックスがか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを使用するかを決めるのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2013-06-30T12:21:06.790 に答える
0

ちょっとしたアドバイス: mysql を mysqli に置き換えます。より安全です。この例はこれと一緒です。

function changePassword($username, $password, $salt){   
$query = "UPDATE mt_user SET password = '". $password ."' , salt = '". $salt . "' WHERE username = '". $username ."'";
$result = mysqli_query($connection,$query);
    if ($result){
    $num_rows = mysqli_affected_rows($connection);        
    } else {
        $num_rows = mysqli_error($connection);
    }
mysql_close();
return $num_rows;
}
于 2013-06-30T14:11:33.427 に答える