Php 为什么这个get函数会出现致命错误?
我试图根据3个要求选择posts表中的所有行 posts表中的userid=users表中的userid posts表中的hostid=users表中的userid posts表中的commentid=零 我想选择所有符合这些要求的行。 这就是错误Php 为什么这个get函数会出现致命错误?,php,mysqli,Php,Mysqli,我试图根据3个要求选择posts表中的所有行 posts表中的userid=users表中的userid posts表中的hostid=users表中的userid posts表中的commentid=零 我想选择所有符合这些要求的行。 这就是错误 Fatal error: Uncaught Error: Call to a member function fetch_assoc() on bool in C:\xampp\htdocs\loginsystem\includes\posts.in
Fatal error: Uncaught Error: Call to a member function fetch_assoc() on bool in C:\xampp\htdocs\loginsystem\includes\posts.inc.php:108 Stack trace: #0 C:\xampp\htdocs\loginsystem\home.php(38): getUploads(Object(mysqli)) #1 {main} thrown in C:\xampp\htdocs\loginsystem\includes\posts.inc.php on line 108
这是我的密码
function getUploads($conn) {
$userName = $_GET["user"];
$sqluserid = "SELECT userid FROM users WHERE userName = $userName";
$userid = mysqli_query($conn, $sqluserid);
$sqlusercontent = "SELECT * FROM posts WHERE hostid = $userid AND userid = $userid AND commentid = 0";
$usercontent = mysqli_query($conn, $sqlusercontent);
$postid = 1;
// This is the actual upload content
while ($row = $usercontent->fetch_assoc()) {
echo "<div class='postbox'><p>";
echo $row['title']."<br>";
echo $row['date']."<br>";
echo "<div><img src='posts/".$userid."/".$postid.".*></div>";
echo $row['description']."<br>";
echo "</p>";
echo "</div>";
$postid++;
}
}
您没有调用$userid->fetch\u assoc来获取第一个查询的结果。您需要这样做,然后使用$row['userid']将userid从行中取出
在第一个查询中,还需要在用户名周围加引号。最好使用预先准备好的语句和$stmt->bind_param来防止SQL注入
但是首先不需要两个查询,您可以连接两个表
SELECT p.*
FROM posts AS p
JOIN users AS u ON p.userid = u.userid AND p.hostid = u.userid
WHERE u.username = '$userName' AND p.commentid = 0
您应该检查查询的结果,然后在第一个查询中就会收到语法错误的通知
$result = mysqli_query($conn, $sql) or die($conn->error);
我试着加上这个
//This will prevent if you dont have any data
if ($usercontent = $conn->query($query)) {
while ($row = $usercontent->fetch_assoc()) {
//the rest of your code here
}
/* free result set */
$result->free();
} else {
echo "No Data";
}
2您可以将$_GET['user']作为参数传递,通过这种方式,您可以单独说明如何传递用户名
function getUploads($conn, $username) {
}
3您可以使用内部联接创建一个查询
您的代码最后应该是这样的
function db () {
static $conn;
if ($conn===NULL){
$conn = mysqli_connect ("localhost", "root", "", "database");
}
return $conn;
}
function getUploads($userName)
{
$conn = db();
$sqlusercontent = "SELECT p.*
FROM posts AS p
JOIN users AS u ON p.userid = u.userid AND p.hostid = u.userid
WHERE u.username = '$userName' AND p.commentid = 0";
// not suere why hostid is equal to userid ?
$postid = 1; //$postid is not suppose to come from the db ?
// This is the actual upload content
if ($usercontent = mysqli_query($conn, $sqlusercontent)) {
while ($row = $usercontent->fetch_assoc()) {
echo "<div class='postbox'><p>";
echo $row['title'] . "<br>";
echo $row['date'] . "<br>";
echo "<div><img src='posts/" . $row['userid'] . "/" . $row['postid'] . "'></div>";
echo $row['description'] . "<br>";
echo "</p>";
echo "</div>";
$postid++; //$postid is not suppose to come from the db ?
}
/* free result set */
$usercontent->free();
} else {
echo "No Data";
}
}
$userName = $_GET["user"];
getUploads($username);
你需要调用$userid->fetch\u assoc,就像你要得到第二个查询的结果一样。我不知道“p.”是什么。。postid不是来自数据库hostid和userid必须都是相等的userid,因为信息在数据库中的放置方式p是posts作为p的别名