php - 使用 PHP 显示 SQL 数据库中的一行

标签 php mysql select html-table

我有一个名为“members”的数据库和一个名为“users”的表。我希望在用户注册时获取一个 id,然后该 id 用于显示表中该用户的详细信息,而不是表中的所有行。 这是我的注册代码:

    <?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
    {
      die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("members", $con);

    $sql="INSERT INTO users (name, email, address, dob, password)
    VALUES('$_POST[name]','$_POST[email]','$_POST[address]','$_POST[dob]','$_POST[mypassword]')";

    if (!mysql_query($sql,$con))
    {
      die('Error: ' . mysql_error());
    }

    {
      header ("Location: sign_in.php");
      exit;
    }

    mysql_close($con)
    ?>

这是我的显示表代码:

    <?php

    // Create connection
    $conn = new mysqli("localhost", "root", "", "members");
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $sql = "SELECT name, email, address, dob FROM users";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        echo "<table><tr><th>Name</th><th>Email</th><th>Address</th>       <th>DOB</th></tr> id-";
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo "<tr><td>".$row["name"]."</td><td>".$row["email"]."</td><td>".$row["address"]."</td><td>".$row["dob"]."</td></tr>";
        }
        echo "</table>";
    } else {
            echo "<p>No Details</p><style>p{color: #336699; font-size: 20pt; font-family: Gulim; font-weight: bold; align: center; padding: 10px; position: absolute; top: 80; left: 560; z-index: 2; border-spacing: 0px;}</style> ";
    }
    $conn->close();
    ?>

最佳答案

在每个页面的最开始,启动一个 session :

session_start();

这将允许您在浏览器和服务器之间的所有请求中保存和检索有关用户浏览 session 的数据。

当您创建新帐户时,请获取新 ID。我在这里假设您的 users 表有一个主 ID。

$sql="INSERT INTO users ...";

if (!mysql_query($sql,$con)) die('Error: ' . mysql_error());

//Must have called session_start() already. This data
//will be accessible from other pages
$_SESSION['userID'] = mysql_insert_id(); 

header ("Location: sign_in.php");
exit;

在另一页(显示用户详细信息的页面)上,您检索用户的 ID 并使用它来仅获取该用户的记录:

session_start();
...
//TODO: make sure the user is signed in before you proceed!

//Retrieve the user's id from storage
$userID = $_SESSION['userID'];
...

//this assumes that the primary id column is named id.  Adjust if needed
$sql = "SELECT name, email, address, dob FROM users WHERE id=$userID"
...

此查询的结果应该只有 1 行。您可以使用它来填充 HTML

附加说明:

  1. 正如其他人告诉您的那样,请考虑放弃 mysql_ 函数。它们已从最新的 PHP 中删除,因此它们是死代码。
  2. 大多数人肯定会了解准备好的陈述。将用户提供的值直接插入到 SQL 查询中(请参阅您的 INSERT 查询)的安全性非常差。您对 SQL 注入(inject)持开放态度,并且您的数据库可以轻松被接管。

关于php - 使用 PHP 显示 SQL 数据库中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38455253/

相关文章:

php - codeigniter 页面不工作,错误 500

php - MySQL SELECT 查询似乎跳过空格

php - 为什么 PHP_INT_MAX 这么小?

php - 如何使用 PDO 指定字符集?

php - 我可以像这样使用 try-catch-finally 吗?

php - 将 Php 变量保存到 mysql 数据库

php - 如何使用复选框(PHP)从 mysql 表中选择一行

javascript - Vue.js 选择占位符在输入点击时消失

php - 如果网址有index.php/somefileOrsomedirectory,如何重定向

java - Android 应用程序未将详细信息提交到外部数据库