我正在尝试为用户个人资料构建一个页面,但我遇到了困难 我不想为刚刚记录的用户创建配置文件,而是创建永久用户配置文件,然后您可以在其中全部查看。
输入:profile.php? id = 1
我正在使用UserPie,可以在github上找到。
其实我的profile.php页面是这样的:
<?php require_once("models/config.php");
$id = $_GET['id']);
if (empty($_GET['id'])){
header("Location: index.php");
die();
}
$sql = "SELECT * FROM users WHERE user_id != '$id'";
$result = mysqli_query($db, $sql) or die(mysqli_error($db));
while($rws = mysqli_fetch_array($result)){
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $rws["username"]; ?> - <?php echo $websiteName; ?></title>
<?php require_once("head_inc.php"); ?>
</head>
<body>
<?php require_once("navbar.php"); ?>
<?php if (is_null($sql)): ?>
<h3 class="page-header">ERROR</h3>
User not found!
<?php else: ?>
<h1>Welcome</h1>
<p>ID: <?php echo $rws['user_id']; ?></p>
<p>Welcome to your account page <strong><?php echo $rws['username']; ?></strong></p>
<p>You joined on <?php echo date("l \\t\h\e jS Y", $rws['sign_up_date']); ?> </p>
<?php endif; ?>
<?php } ?>
我无法使其发挥作用 你有什么建议吗?
我这样解决了:
$sql = "SELECT * FROM users WHERE user_id = '$id'";
$result = $db->sql_query($sql);
while($rws = mysqli_fetch_array($result)){
答案 0 :(得分:0)
$sql = "SELECT * FROM users WHERE user_id != '$id'";
$result = mysqli_query($db, $sql) or die(mysqli_error($db));
由于您只需要1个响应,因此您可以获得1个结果而不是循环它们。查询失败时$result
为false。结果是一个MysqliResult
对象,它有num_rows
成员变量,表示结果的数量。
if ($result && $result->num_rows > 0) {
$rws = mysqli_fetch_array($result);
// Output template/html here
} else {
// ERROR could not find
}
此外,使用SQL注入可以利用$sql = "SELECT * FROM users WHERE user_id != '$id'";
。为避免这种情况,请使用mysqli
Prepared Statements - PHP.net