数据库输出未显示。获取 else 语句

Database output not showing. Getting else statement

我有以下代码,我没有让我的任何数据库输出出现在我的网站上。我只得到 echo "<p>This topic does not exist.</p>"; 的 else 语句回显响应,但我的数据库中有主题。

有没有人在我的代码中看到任何会导致此代码不显示任何输出并出现 else 语句的内容?如果没有,我该如何调试它来找出问题所在?我没有从准备好的语句中收到任何错误,因此它必须在 numrows 语句或 while 循环中。

$con = mysqli_connect("localhost", "root", "", "db");
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$cid = $_GET['cid'];
$tid = $_GET['tid'];
$userid = ( isset( $_SESSION['user'] ) ? $_SESSION['user'] : "" );

//Prepared SELECT stmt to get forum topics
$stmt = $con->prepare("SELECT * FROM forum_topics WHERE `category_id`=? AND id=? LIMIT 1");
if ( !$stmt || $con->error ) {
    die('Select topics prepare() failed: ' . htmlspecialchars($con->error));
}
if(!$stmt->bind_param('ii', $cid, $tid)) {
    die('Select topics bind_param() failed: ' . htmlspecialchars($stmt->error));
}
if(!$stmt->execute()) {
    die('Select topics execute() failed: ' . htmlspecialchars($stmt->error));
}
$numrows = $stmt->num_rows;
if($numrows == 1){
    echo "<table width='100%'>";
    if ( $_SESSION['user'] ) { 
        echo "<tr><td colspan='2'><input type='submit' value='Add Reply' onClick=\"window.location = 
    'forum_post_reply.php?cid=".$cid."$tid=".$tid."'\"> <hr />";
    } else {
        echo "<tr><td colspan='2'><p>Please log in to add your reply</p><hr /></td></tr>";
    }
    while($row = mysqli_fetch_assoc($stmt)){
        //Prepared SELECT stmt to get forum topics
        $stmt2 = $con->prepare("SELECT * FROM forum_posts WHERE `category_id`=? AND topic_id=?");
        if ( !$stmt2 || $con->error ) {
            die('Select topics prepare() failed: ' . htmlspecialchars($con->error));
        }
        if(!$stmt2->bind_param('ii', $cid, $tid)) {
            die('Select topics bind_param() failed: ' . htmlspecialchars($stmt2->error));
        }
        if(!$stmt2->execute()) {
            die('Select topics execute() failed: ' . htmlspecialchars($stmt2->error));
        }
        while($row2 = mysqli_fetch_assoc($stmt2)){
            echo "<tr><td valign='top' style='border: 1px solid #000000;'>
            <div style='min-height: 125px;'>".$row['topic_title']."<br />
            by ".$row2['post_creator']." - " .$row2['post_date']. "<hr />" . $row2['post_content'] ."</div></td>
            <td width='200' valign='top' align='center' style='border: 1px solid #000000;'>User Info Here!</td></tr>
            <tr><td colspan='2'><hr /></td></tr>";
        }
    }
} else {
    echo "<p>This topic does not exist.</p>";
}

$cid = $_GET['cid'];是类别id

`$tid = $_GET['tid'];` is another id

引用the documentation:

Returns the number of rows in the result set. The use of mysqli_stmt_num_rows() depends on whether or not you used mysqli_stmt_store_result() to buffer the entire result set in the statement handle.

以下应该可以解决问题:

$stmt->store_result();
$numrows = $stmt->num_rows;
if ($numrows == 1) {
    // etc...