我似乎在将数据库输出到html表时遇到了一个小问题。每次运行我的代码时,它都会输出以下错误:
mysqli_num_rows()期望参数1为mysqli_result,boolean 给定
但是我不太确定我哪里出错了,所以我想我会尝试从社区获得帮助。
先谢谢大家。
<?php
$query = "SELECT name, add1, add2, add3, post, num FROM organisations";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo '<table>';
echo '<tr>';
echo '<td>Name</td>';
echo '<td>Add1</td>';
echo '<td>Add2</td>';
echo '<td>Add3</td>';
echo '<td>Post</td>';
echo '<td>Num</td>';
echo '</tr>';
echo '<tr>';
echo '<td>' . $row['name'] . '</td>';
echo '<td>' . $row['add1'] . '</td>';
echo '<td>' . $row['add2'] . '</td>';
echo '<td>' . $row['add3'] . '</td>';
echo '<td>' . $row['post'] . '</td>';
echo '<td>' . $row['num'] . '</td>';
echo '</tr>';
echo '</table>';
}
}
else {
echo '<p align="center">No Information Saved Into The Database.</p>';
}
?>
更新: 我以为我会尝试一些不同的东西,因为它被标记为重复,但没有真正帮助解决我的问题。但是,现在没有错误但没有表格?
<?php
$query = "SELECT `id`, name, add1, add2, add3, post, num FROM `organisations` WHERE `id`>'0'";
if($query_run = mysqli_query($conn,$query)){
$query_num_rows = mysqli_num_rows($query_run);
if($query_num_rows < 1){
echo 'No Client Organisations Have Been Added.';
}
else{
while($row = mysqli_fetch_assoc($result)) {
echo '<table>';
echo '<tr>';
echo '<td>Name</td>';
echo '<td>Add1</td>';
echo '<td>Add2</td>';
echo '<td>Add3</td>';
echo '<td>Post</td>';
echo '<td>Num</td>';
echo '</tr>';
echo '<tr>';
echo '<td>' . $row['name'] . '</td>';
echo '<td>' . $row['add1'] . '</td>';
echo '<td>' . $row['add2'] . '</td>';
echo '<td>' . $row['add3'] . '</td>';
echo '<td>' . $row['post'] . '</td>';
echo '<td>' . $row['num'] . '</td>';
echo '</tr>';
echo '</table>';
}
}
}
?>
答案 0 :(得分:0)
CD001的评论确实回答了原始问题,您的问题 重复。
但是,由于该问题已经解决,并且您想知道为什么您没有获得表格,因为如果在查询期间出现错误,mysqli_query
将返回false。来自docs:
失败时返回FALSE。成功的SELECT,SHOW,DESCRIBE或 EXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于 其他成功的查询mysqli_query()将返回TRUE。
// Your PHP is likely exiting here as mysqli_query returns false
// on a failed query.
if($query_run = mysqli_query($conn,$query)){
$query_num_rows = mysqli_num_rows($query_run);
if($query_num_rows < 1){
echo 'No Client Organisations Have Been Added.';
} else{
while($row = mysqli_fetch_assoc($result)) {
// Echo table
}
}
}
要检查您的查询是否失败,请执行以下操作:
if ( $query_run = mysqli_query($conn, $query) ) { .. }
然而,我们可以做得更好。
$results = mysqli_query($conn, $query);
if ( !$results ) {
// Our query failed!
printf('Query Error: %s', mysqli_error($conn));
} else {
// The rest of your code here as if the query succeeded
}
作为旁注,您似乎正在为数据库中的每条记录创建一个全新的<table>
。如果您想要一个包含所有记录的单个表,<table>
标记和第一个<tr>
应该在您的循环之外。
echo '<table>';
echo '<tr>';
echo '<td>Name</td>';
echo '<td>Add1</td>';
echo '<td>Add2</td>';
echo '<td>Add3</td>';
echo '<td>Post</td>';
echo '<td>Num</td>';
echo '</tr>';
while ( $row = mysqli_fetch_assoc($result) ) {
echo '<tr>';
echo '<td>' . $row['name'] . '</td>';
echo '<td>' . $row['add1'] . '</td>';
echo '<td>' . $row['add2'] . '</td>';
echo '<td>' . $row['add3'] . '</td>';
echo '<td>' . $row['post'] . '</td>';
echo '<td>' . $row['num'] . '</td>';
echo '</tr>';
}
echo '</table>';