0

MySQLからMySQLiに切り替えようとするとかなり混乱します。非常に基本的な例を試して、それを機能させることができるかどうかを確認しています。.ajaxの代わりに.postを使用し、今のところJSONを返さないという悪い習慣を許してください。私は、クエリを機能させることができるかどうかを確認するために古いコードを使用しています。

現在、index.phpで、新しい接続を作成します。

$connection = new mysqli($host, $username, $password, $database);
if (mysqli_connect_errno()) die(mysqli_connect_error());

次に、scripts.jsファイルでjqueryを使用して、変数を収集し、処理ファイルに送信します。

    $("#toolbarTitle-Login").click(function() {
        var loginEmail = $("#toolbarTextbox-Email").val();
        var loginPassword = $("#toolbarTextbox-Password").val();
        if (loginEmail != "") {
            $.post(
                'ajax/loginProcess.php', 
                {
                    'email': loginEmail,
                    'password': loginPassword
                },
                function (response) {
                    $(".testingBox").html(response);
                }
            );
        }
    });

ここで、処理ファイルloginProcess.phpで、次のクエリを実行します。

$passwordMd5 = md5($_POST["password"]);
$email = $connection->$_POST["email"];
$password = $connection->$passwordM5;

$sql = $connection->prepare("SELECT clientId, studentEmail, parentEmail, school
                                                    FROM clients
                                                    WHERE (studentEmail = ? AND studentPassword = ?) OR (parentEmail = ? AND parentPassword = ?);");

$statement->bind_param("ssss",$email,$password,$email,$password);

$row["id"] = 0;
$row["studentEmail"] = '';
$row["parentEmail"] = '';
$row["school"] = '';

$statement->bind_result($row["id"], $row["studentEmail"], $row["parentEmail"], $row["school"]);
$statement->execute();

while($statement->fetch()) {
    print  $row["id"].' '.$row["studentEmail"].' '.$row["parentEmail"].' '.$row["school"].'<br />';
}

これにより、「致命的なエラー:「/home/guysandd/public_html/test/v3/ajax/loginProcess.php online8」の非オブジェクトに対するメンバー関数prepare()の呼び出し」が発生します。これは、接続を認識していませんが、どうすれば接続できるかわかりません。また、パラメーターが分離されているため、mysqli_real_escape_stringが必要かどうか疑問に思いました。

編集:少し明確にするために、私が取り組んでいるサイトには、親と学生の2つのログインを持つアカウントがあります。クエリが情報を返した後、私は彼らが親であるか学生であるかを確認し、これにより内容が変更されます。

4

1 に答える 1

1

この部分を書く必要があります

$connection = new mysqli($host, $username, $password, $database);
if (mysqli_connect_errno()) die(mysqli_connect_error());

loginProcess.phpアクティブなDB接続がないため、再度

編集

その場合、持続的接続を作成する必要があります。PHPマニュアルから

mysql拡張機能とは異なり、mysqliは持続的接続を開くための別個の機能を提供しません。持続的接続を開くには、p:接続時にホスト名の前に追加する必要があります。

于 2012-11-17T00:09:11.667 に答える