- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 mysqli_stmt_bind_result()
但我认为我没有正确使用它。下面的代码获取用户名和密码并在数据库中运行查询,如果匹配则返回成功。
但是,当我打印出该行时,它是空的。我可能做错了什么?
我不打算使用 mysqli_stmt_get_result()
我知道它是如何工作的。在这种情况下,我想利用 mysqli_stmt_bind_result
。
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
require 'dbh.inc.php';
$email = $_POST['email'];
$pass = $_POST['pass'];
if (empty($email) || empty($pass)) {
header("Location: ../login.php?error=emptyfields");
exit();
}
else {
$sql = "SELECT idUsers, emailUsers, firstNameUsers, lastNameUsers, pwdUsers, bdayUsers FROM users WHERE emailUsers = ?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo 'errorme';
exit();
}
else {
mysqli_stmt_bind_param($stmt ,"s", $email);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $id_Users ,$email_Users, $first_NameUsers, $last_NameUsers, $pass_word, $bday_Users);
if ($row=mysqli_stmt_fetch($stmt)) {
$message = $row["$email"];
echo "<script type='text/javascript'>alert('$message');</script>";
$pwdCheck = password_verify($pass, $row['pwdUsers']);
if ($pwdCheck == false) {
echo 'wrongpass';
exit();
}
else if($pwdCheck == true) {
session_start();
$_SESSION['userId'] = $row['idUsers'];
$_SESSION['userName'] = $row['firstNameUsers'];
echo 'success';
exit();
}
else {
echo 'noresults';
exit();
}
}
else {
echo 'nouser';
exit();
}
}
}
}
else {
header("Location: ../login.php");
exit();
}
?>
最佳答案
您通过 mysqli_stmt_bind_result()
绑定(bind)结果,一旦您的结果被获取,这些变量将保存这些值。
您的 fetch()
函数返回一个 bool 值,而不是结果(与未准备好的查询不同)。
if (mysqli_stmt_fetch($stmt)) {
$message = $email_Users;
echo "<script type='text/javascript'>alert('$message');</script>";
$pwdCheck = password_verify($pass, $pass_word);
这同样适用于您尝试使用 $row
的任何地方 - 您必须使用在 mysqli_stmt_bind_result()
中分配的变量(因此 $id_Users
而不是 $row['idUsers']
,$first_NameUsers
而不是 $row['firstNameUsers']
等等) .
有关详细信息,请参阅每种方法的文档。
关于php - 使用 mysqli_stmt_bind_result 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53195500/
我正在将我的 php/mySQL 代码转换为使用准备好的语句。我可以看到准备 SQL 或 DML 以及绑定(bind)参数的值(value)(安全性等)。但我的查询按名称指定选择列表中的字段,并且我使
好吧,这让我很烦,我似乎无法在 PHP 文档中找到任何内容,也无法在 Google resultosphere 的任何地方找到任何内容,所以也许有人可以在这里提供帮助。 我正在使用准备好的语句、绑定(
我正在尝试使用 mysqli_stmt_bind_result() 但我认为我没有正确使用它。下面的代码获取用户名和密码并在数据库中运行查询,如果匹配则返回成功。 但是,当我打印出该行时,它是空的。我
将 PHP 脚本从 PHP 5.2 迁移到 PHP 5.3 时,我遇到了以下问题:该脚本的一般用途是数据挖掘。我有一个向 MySQL 服务器添加数据的程序。因为它确实是重复的,所以我(不久前)重写了它
所以我尝试创建一个 UNION 查询,这样我就可以从两个表(同一个数据库)中获取数据,稍后我尝试使用 mysqli_bind_result( ),但出现错误: mysqli_stmt_bind_res
这个问题已经有答案了: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in p
我是一名优秀的程序员,十分优秀!