1

私は phpacademy.org の Alex による数年前のいくつかのチュートリアルを見ています。彼は mysqli の代わりに mysql を使用しています。代わりにmysqli。誰かがそれを変換できますか?

<?php
$connect = mysql_connect('localhost', 'root', 'pass') or die (mysqli_error());
mysql_select_db('jquery');

if (isset($_POST['username'])) {
    $username = mysql_real_escape_string($_POST['username']);
    if (!empty($username)) {
        $username_query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username'");
        $username_result = mysql_result($username_query, 0);

        if ($username_result == 0) {
            echo 'Username is available!';
        } else if ($username_result == 1) {
            echo 'Sorry, that username is taken.';
        }
    }
}
?>

私がやろうとしたことはこれです..しかしmysqli_result、私にエラーを与え続けました:

<?php
$connect = mysqli_connect('localhost', 'root', 'pass', 'jquery') or die (mysqli_error());

if (isset($_POST['username'])) {
    $username = mysqli_real_escape_string($connect, $_POST['username']);
    if (!empty($username)) {
        $username_query = mysqli_query($connect, "SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username'");
        $username_result = mysqli_result($username_query, 0);

        if ($username_result == 0) {
            echo 'Username is available!';
        } else if ($username_result == 1) {
            echo 'Sorry, that username is taken.';
        }
    }
}
?>

したがって、私が取得し続けた唯一のエラーは、次のようにmysqli_result言うことです。

致命的なエラー: 8 行目の \php\username.php の未定義関数 mysqli_result() の呼び出し

私はオンラインの使用法を調べましたが、mysqli_resultこれを理解するのに役立つ結果があまり見つかりませんでした.ここの誰かが私を助けてくれることを願っています.

4

2 に答える 2

2

オブジェクト指向スタイルを使用する場合、あなた$username_queryはクラスのものです。関数ではなくクラスです。mysqli_resultmysqli_result

結果セットから行を取得するには、次のようにします (たとえば)。

$username_result = mysqli_fetch_array($username_query);

また、関数の代わりに mysqli (または PDO) を使用する必要がある理由はmysql_*、後者が推奨されていないという理由だけではありません。PDO (および mysqli) は準備ステートメントを提供し、SQL インジェクションに対してエスケープ関数よりも優れた保護を提供します。

于 2013-04-10T00:48:10.973 に答える
1

最初に、テーブルのユーザー名列がユーザーunique名が重複しないようにして、$count正確に 0 または 1 であることを確認してから、次のことを試してください。

if (isset($_POST['username']) && $_POST['username'] != '') {

    $connect = new mysqli('localhost', 'root', 'pass', 'jquery') or die (mysqli_error());
    $username       = $_POST['username'];
    $query          = "SELECT COUNT(`user_id`) AS count FROM `users` WHERE `username`=?";
    $username_query = $connect->prepare($query);
    $username_query->bind_param('s', $username);
    $username_query->execute();
    $username_query->bind_result($count);
    $username_query->fetch();
    $username_query->close();
    $connect->close();

    if ($count == 0) {
        echo 'Username is available!';
    } else if ($count == 1) {
        echo 'Sorry, that username is taken.';
    }
}
于 2013-04-10T00:56:26.953 に答える