数据库输出未显示。得到其他声明

时间:2015-07-20 05:26:53

标签: php mysql if-statement while-loop prepared-statement

我有以下代码,我没有得到任何我的db输出显示在我的网站上。我只得到history的else语句回应响应,但我的数据库中有主题。

有没有人在我的代码中看到任何会导致它不显示任何输出并使else语句出现的内容?如果没有,我该如何调试这个以找出问题?我没有从我准备好的语句中得到任何错误,因此它必须在numrows语句或echo "<p>This topic does not exist.</p>";循环中。

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>"; } 是类别ID

$cid = $_GET['cid'];

1 个答案:

答案 0 :(得分:1)

引用the documentation

  

返回结果集中的行数。 mysqli_stmt_num_rows()的使用取决于您是否使用mysqli_stmt_store_result()缓冲语句句柄中的整个结果集。

以下应该可以解决问题:

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