php - 准备好的声明不起作用 - 空白页

标签 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("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';
}

}
?>

我是准备好的语句的新手,我无法让它工作。 尝试登录时,我只是得到一个空白页面,没有错误。我知道我已连接到数据库,因为如果我删除准备好的语句并以不安全的方式进行操作,则一切都会正常登录。

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

最佳答案

Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement in C:\xampp\htdocs\newsystem\loginadd.php

这是因为您选择了 *(所有字段)。您应该更具体地说明您想要获取的字段(例如SELECT id FROM ...)。
看看examples on PHP doc :选择了 2 个字段,bind_result() 的 2 个参数。

关于php - 准备好的声明不起作用 - 空白页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28988188/

相关文章:

php - 使用 PHP 将所有 $_POST 数据插入 mysql?

php - MySql 数据库 INSERT 操作在硬盘(本地主机)上有效,但在 Internet 上托管时无效

php - PHP 中准备好的 SQL 语句不更新 MySQL 数据库行

php - 如何将易受攻击的 SQL 查询转换为 PHP 参数化查询

php - 从数据库获取数据时数组的问题

php - 如何阻止用户将 HTML 代码放入文本输入

PHP 正在更新一个不存在的数据库索引

javascript - 如何使用表格单元格值获取数据? PHP 简单 HTML DOM 解析器

php - 如何建立dicom数据库

PHP Echo 换行符