我在尝试从 MySQL 切换到 MySQLi 时感到很困惑,我只是在尝试一个非常基本的示例,看看我是否可以让它工作。请原谅使用 .post 而不是 .ajax 并且暂时不返回 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 on line 8”中的非对象上调用成员函数 prepare()。我认为这意味着它是不认识我的连接,但我不确定如何让它做到这一点。另外,我想知道 mysqli_real_escape_string 是否是必要的,因为参数是分开的。
编辑:澄清一下,我正在处理的网站有两个登录帐户:父母和学生。查询返回信息后,我检查他们是家长还是学生,这会改变内容。