2015-07-20 51 views
2

我有下面的代码,我没有得到任何我的数据库输出出现在我的网站上。我只得到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 
+0

尝试'$ numRows行> 1' –

+0

没有帮助。不过谢谢。 – Paul

+0

在'phpmyadmin'中尝试这个查询 –

回答

1

引述the documentation

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

下应该做的伎俩:

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

认为你钉了一个 – Drew

+0

添加这给了我这个错误....警告:mysqli_fetch_assoc()期望参数1是mysqli_result, $ row = mysqli_fetch_assoc($ stmt)){' – Paul

+0

如果我这样做,while($ row = $ stmt-> mysqli_fetch_assoc){'...我不会再犯这个错误了,但是页面上没有任何东西显示出来声明。 – Paul