Я очень запутался, пытаясь переключиться с MySQL на MySQLi, и я просто пытаюсь сделать очень простой пример, чтобы увидеть, могу ли я заставить его работать. Пожалуйста, простите плохую практику использования .post вместо .ajax и теперь не возвращаю JSON, я просто использую старый код, чтобы узнать, могу ли я заставить запросы работать.
В настоящее время на index.php я создаю новое соединение:
$connection = new mysqli($host, $username, $password, $database); if (mysqli_connect_errno()) die(mysqli_connect_error());
Затем, используя jquery в моем файле scripts.js, я собираю свои переменные и отправляю их в файл обработки:
$("#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 в строке 8 ». Я предполагаю, что это означает, что это не узнавая мое соединение, но я не уверен, как это сделать. Также мне было интересно, нужна ли mysqli_real_escape_string, потому что параметры являются отдельными.
Редактирование: просто для того, чтобы немного разъяснить, сайт, на котором я работаю, имеет учетные записи с двумя логинами: родительский и студенческий. После того, как запрос возвращает информацию, я проверяю, являются ли они родителем или учеником, и это изменяет содержимое.
Вы должны написать эту часть
$connection = new mysqli($host, $username, $password, $database); if (mysqli_connect_errno()) die(mysqli_connect_error());
в loginProcess.php
снова, поскольку нет активного соединения с БД
В этом случае вам придется создавать постоянное соединение. Из руководства PHP
В отличие от расширения mysql, mysqli не предоставляет отдельную функцию для открытия постоянных соединений. Чтобы открыть постоянное соединение, вы должны добавить p:
к имени хоста при подключении.