php - 为什么数据不显示 php mysql

标签 php mysql database session

尝试在index.php上显示数据,用户名工作正常,但电子邮件未显示。

服务器.php

$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) {


  $_SESSION['email'] = $email;
  $_SESSION['username'] = $username;
  $_SESSION['success'] = "You are now logged in";
  header('location: index.php');

index.php

<?php
// Echo session variables that were set on previous page
echo "Your email is: " . $_SESSION['email'] . "<br>";
echo "Your username is: " . $_SESSION['username'] . "";
?>

最佳答案

查询数据后您没有获取结果。使用mysqli_fetch_assoc

请注意我已申请mysqli_real_escape_string到您的 WHERE 条件参数,以解决 SQL 注入(inject)相关问题。 Although it is not a fool-proof solution!

更改为以下内容:

$query = "SELECT * 
          FROM users 
          WHERE username = '" . mysqli_real_escape_string($db, $username) . 
          " AND password = '" . mysqli_real_escape_string($db, $password) . "'";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) {

  $row = mysqli_fetch_assoc($db, $results);
  $_SESSION['email'] = $row['email'];
  $_SESSION['username'] =  $row['username'];
  $_SESSION['success'] = "You are now logged in";

请阅读how to prevent SQL injection related issues using Prepared Statements .

关于php - 为什么数据不显示 php mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52354990/

相关文章:

ios - 如何删除错误 "[NSString stringWithUTF8String:]: NULL cString'“?

mysql - 无法设置对 MySQL 服务器的外部访问

mysql - 无论如何都必须完全扫描表上的索引? (MySQL)

database - 如何找到前 10 个昂贵的 sql -Oracle

php - WSO2 WSF/PHP 安装问题(需要 C 开发人员帮助)

mysql - 在包含逗号分隔值的 varchar 字段上创建索引是否合适?

java - 使用电话号码比较查询数据库

php - 无法将类分配给用于 sql 选择/更新的表

php - 如何生成多个数组中元素的组合?

php - kint 如何解析以符号(加号/减号、波浪号、感叹号、at)为前缀的 PHP 函数?