我有一个名为“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
附加说明:
- 正如其他人告诉您的那样,请考虑放弃
mysql_
函数。它们已从最新的 PHP 中删除,因此它们是死代码。 - 大多数人肯定会了解准备好的陈述。将用户提供的值直接插入到 SQL 查询中(请参阅您的
INSERT
查询)的安全性非常差。您对 SQL 注入(inject)持开放态度,并且您的数据库可以轻松被接管。
关于php - 使用 PHP 显示 SQL 数据库中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38455253/