Php 准备好的报表不起作用-空白页

Php 准备好的报表不起作用-空白页,php,mysql,prepared-statement,Php,Mysql,Prepared Statement,我有这个密码 $con = new mysqli('####', '####', '####', '####'); if(mysqli_connect_errno()){ echo 'Connection Failed:' . mysqli_connect_errno(); exit(); } //Variables $user = $_POST['username']; $zone = $_POST['password']; $pass = strtoupper(hash("whirl

我有这个密码

$con = new mysqli('####', '####',   '####', '####');
if(mysqli_connect_errno()){
echo 'Connection Failed:' . mysqli_connect_errno();
exit();
}

//Variables

$user = $_POST['username'];
$zone = $_POST['password'];
$pass = strtoupper(hash("whirlpool", $zone));

//Prepare
if($stmt = $con -> prepare("SELECT * FROM `accounts` WHERE Username=? AND Key=?")){






$stmt -> bind_param("ss", $user, $pass);
$stmt -> execute();
$stmt -> bind_results($result);
$stmt -> fetch();
if($result) {

    $_SESSION['username'] = $user;
    $url = 'home.php';
    echo '<META HTTP-EQUIV=Refresh CONTENT="1; URL='.$url.'">';
} else {

    echo 'Login Failed';
}

}
?>
我不熟悉事先准备好的声明,我无法让它发挥作用。 在尝试登录时,我只得到一个空白的白色页面,没有错误。我知道我已连接到db,因为如果我删除准备好的语句并以不安全的方式进行操作,那么一切都会正常登录


请注意。我刚刚查阅了有关准备好的语句的教程,这样我就可以学习更安全地编写代码。我绝对不是这方面的专家。任何提示都将不胜感激。

根据@AbrikChakraborty的评论,您只需在域名上添加反勾号即可:

if($stmt = $con -> prepare("SELECT * FROM `accounts` WHERE Username=? AND `Key`=?")){
根据@caCtus评论:

$stmt -> bind_result($result);

如果您真的想绑定返回的未知数量的字段,您可以检查或只使用PDO。

如果实际查询获取结果,请验证它。我怀疑查询本身是否返回空结果

"SELECT * FROM `accounts` WHERE Username=$user AND Key=$pass"
警告:mysqli_stmt::bind_result:绑定变量的数量不正确 匹配中已准备语句中的字段数 C:\xampp\htdocs\newsystem\loginadd.php

这是因为您选择了*所有字段。您应该更具体地了解要获取的字段,例如SELECT id FROM。。。。
查看:选择了两个字段,两个参数用于绑定结果。

空白白页通常表示没有显示错误。请看一看:,然后回来告诉我们您遇到的错误,或者他们可能会帮助您在没有我们帮助的情况下找到问题:。Key是保留字,您需要在查询中使用backticks转义它。@Abhik Key是我在db中标记的字段,而不是密码。它不是bind\u result而不是bind\u results吗?没有's'我从未使用过mysqli_uuu函数,所以我不确定,但在PHP文档中找不到以's'结尾的函数。@caCtus你是对的。我只是改变了。不过还是一样的问题。我也去了你提到我的页面。我将这些行添加到我的文件中,并确保在我的php.ini中将display_errors设置为On。奇怪的是,仍然是同一个发行人说,如果我删除准备好的声明,并以不安全的方式进行操作,那么一切都会正常登录。不过出于安全目的,我希望使用准备好的声明进行操作。我添加了反勾号,现在我收到了这个错误。警告:mysqli_stmt::bind_结果:绑定变量的数量与第75行C:\xampp\htdocs\newsystem\loginadd.php中准备好的语句中的字段数量不匹配登录失败这好像是注释的摘要?那么答案在哪里?@Kevin1990这是因为您选择了*所有字段。您应该更具体地了解您想要获取的字段,例如从…@caCtus选择id请将其作为答案发布,以便我可以标记已解决。选择ID而不是*已起作用。非常感谢您,先生。@Kevin1990如果您真的需要绑定多个专栏,请检查这里。非常感谢您解决了我的问题。我很感激。