`SELECT` 查询不适用于准备好的语句
`SELECT` Query not working for prepared statement
我试图在我的数据库的用户列中显示所有用户,但没有显示任何内容。我想根据他们获得的喜欢数量对用户进行排名。我的查询看起来不错,但没有显示任何内容。没有警告、错误或我要求的输出。有人可以告诉我我做错了什么吗?我已经检查了大约一个小时的所有答案,然后我尝试使用我已经准备好的陈述。但是没有任何效果。
这是整个页面:
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
error_reporting(-1);
require 'includes/header.php';
$stmt = $con->prepare('SELECT username, num_likes FROM users WHERE username = ? ORDER BY num_likes DESC ');
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($username, $num_likes);
// output data of each row
while ($stmt -> fetch()) {
echo '<div id="rcorners2">';
echo '<p id="p2">' . $username . '</p>';
echo '<p id="p4">' . $num_likes . '</p>';
echo'</div>';
echo'</br>';
}
?>
<!DOCTYPE html>
<html>
<head>
<title>User's Ranks</title>
<style type="text/css">
#rcorners2 {
border-radius: 5px;
border: 2px solid #8c8c8c;
padding: 20px;
width: 500px;
word-wrap: break-word;
height: 200px;
overflow-x: hidden;
margin-left: 350px;
}
#p2 {
float:left;
color: #000000;
margin-top: -10;
font-size: 20px;
}
#p4 {
float:left;
color: #000000;
margin-top: -1%;
font-size: 20px;
}
</style>
</head>
<body>
</body>
</html>
您需要先初始化一个数据库连接。
例如$mysqli = new mysqli("localhost","my_user","my_password","my_db");
参考:https://www.w3schools.com/php/func_mysqli_connect.asp
您还在输出 HTML <!DOCTYPE html>
和 HTML 文档的其他基本部分之前输出查询结果。因此,即使您获得任何行,它们也不会出现在文档中
如果您在文档中输出您的信息<body>
,它将显示在页面上
<!DOCTYPE html>
<html>
<head>
<title>User's Ranks</title>
<style type="text/css">
#rcorners2 {
border-radius: 5px;
border: 2px solid #8c8c8c;
padding: 20px;
width: 500px;
word-wrap: break-word;
height: 200px;
overflow-x: hidden;
margin-left: 350px;
}
#p2 {
float:left;
color: #000000;
margin-top: -10;
font-size: 20px;
}
#p4 {
float:left;
color: #000000;
margin-top: -1%;
font-size: 20px;
}
</style>
</head>
<body>
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
error_reporting(-1);
require 'includes/header.php';
$stmt = $con->prepare('SELECT username, num_likes
FROM users WHERE username = ?
ORDER BY num_likes DESC ');
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($username, $num_likes);
// output data of each row
while ($stmt -> fetch()) {
echo '<div id="rcorners2">';
echo '<p id="p2">' . $username . '</p>';
echo '<p id="p4">' . $num_likes . '</p>';
echo'</div>';
echo'</br>';
}
?>
</body>
</html>
您还说您希望所有用户都付款,因此可能还需要更改查询以获取所有用户,而您的用户只有一个。
$result = $con->query('SELECT username, num_likes
FROM users
ORDER BY num_likes DESC ');
// output data of each row
while ($row = $result->fetch_assoc()) {
echo '<div id="rcorners2">';
echo '<p id="p2">' . $row['username'] . '</p>';
echo '<p id="p4">' . $row['num_likes'] . '</p>';
echo'</div>';
echo'</br>';
我试图在我的数据库的用户列中显示所有用户,但没有显示任何内容。我想根据他们获得的喜欢数量对用户进行排名。我的查询看起来不错,但没有显示任何内容。没有警告、错误或我要求的输出。有人可以告诉我我做错了什么吗?我已经检查了大约一个小时的所有答案,然后我尝试使用我已经准备好的陈述。但是没有任何效果。
这是整个页面:
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
error_reporting(-1);
require 'includes/header.php';
$stmt = $con->prepare('SELECT username, num_likes FROM users WHERE username = ? ORDER BY num_likes DESC ');
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($username, $num_likes);
// output data of each row
while ($stmt -> fetch()) {
echo '<div id="rcorners2">';
echo '<p id="p2">' . $username . '</p>';
echo '<p id="p4">' . $num_likes . '</p>';
echo'</div>';
echo'</br>';
}
?>
<!DOCTYPE html>
<html>
<head>
<title>User's Ranks</title>
<style type="text/css">
#rcorners2 {
border-radius: 5px;
border: 2px solid #8c8c8c;
padding: 20px;
width: 500px;
word-wrap: break-word;
height: 200px;
overflow-x: hidden;
margin-left: 350px;
}
#p2 {
float:left;
color: #000000;
margin-top: -10;
font-size: 20px;
}
#p4 {
float:left;
color: #000000;
margin-top: -1%;
font-size: 20px;
}
</style>
</head>
<body>
</body>
</html>
您需要先初始化一个数据库连接。
例如$mysqli = new mysqli("localhost","my_user","my_password","my_db"); 参考:https://www.w3schools.com/php/func_mysqli_connect.asp
您还在输出 HTML <!DOCTYPE html>
和 HTML 文档的其他基本部分之前输出查询结果。因此,即使您获得任何行,它们也不会出现在文档中
如果您在文档中输出您的信息<body>
,它将显示在页面上
<!DOCTYPE html>
<html>
<head>
<title>User's Ranks</title>
<style type="text/css">
#rcorners2 {
border-radius: 5px;
border: 2px solid #8c8c8c;
padding: 20px;
width: 500px;
word-wrap: break-word;
height: 200px;
overflow-x: hidden;
margin-left: 350px;
}
#p2 {
float:left;
color: #000000;
margin-top: -10;
font-size: 20px;
}
#p4 {
float:left;
color: #000000;
margin-top: -1%;
font-size: 20px;
}
</style>
</head>
<body>
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
error_reporting(-1);
require 'includes/header.php';
$stmt = $con->prepare('SELECT username, num_likes
FROM users WHERE username = ?
ORDER BY num_likes DESC ');
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($username, $num_likes);
// output data of each row
while ($stmt -> fetch()) {
echo '<div id="rcorners2">';
echo '<p id="p2">' . $username . '</p>';
echo '<p id="p4">' . $num_likes . '</p>';
echo'</div>';
echo'</br>';
}
?>
</body>
</html>
您还说您希望所有用户都付款,因此可能还需要更改查询以获取所有用户,而您的用户只有一个。
$result = $con->query('SELECT username, num_likes
FROM users
ORDER BY num_likes DESC ');
// output data of each row
while ($row = $result->fetch_assoc()) {
echo '<div id="rcorners2">';
echo '<p id="p2">' . $row['username'] . '</p>';
echo '<p id="p4">' . $row['num_likes'] . '</p>';
echo'</div>';
echo'</br>';