Php - 显示来自MySQL查询的信息

时间:2015-06-17 07:15:55

标签: php mysql

我试图在选择下拉列表中的选项然后通过post方法提交时显示查询。

这是我的PHP代码:

<?php 

if(isset($_POST['name'])) {

$q = "SELECT CONCAT(p.firstN, ', ', p.lastN) AS name, c.ConsDate AS CONDATE 
     FROM Patient p
     INNER JOIN Consultation c
     ON p.PatientId = c.PatID
     WHERE name='" . $_POST['name'] . "'
     ORDER BY c.ConsDate";  

$r = @mysqli_query ($dbc, $q); // Run the query.

// Count the number of returned rows: *****this is line 77*****
$num = mysqli_num_rows($r);
}
if ($num > 0) { // If it ran OK, display information.

// Put in some breaks:

echo "<br><br>";

// Table header.
echo '<table align="center" cellspacing="3" cellpadding="3" width="75%">

<tr>

<td align="left"><b>Name</b></td>

<td align="left"><b>Consultation Date</b></td>

<td align="left"><b>Doctor</b></td>

</tr>';

 // Fetch and print all the records:
 while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
 echo '<tr><td align="left">' . $row['name'] . '</td>
       <td align="left">' . $row['CONDATE'] . '</td></tr>
';
}

echo '</table>'; // Close the table.

mysqli_free_result ($r); // Free up the resources.  

} else { // If no records were returned.

echo '<p class="error">There are currently no consultations.</p>';


mysqli_close($dbc); // Close the database connection.
}
include ('includes/footer.html');
?>

我得到没有错误的下拉列表和空表,提交表单后我收到此错误:

  

警告:mysqli_num_rows()期望参数1为mysqli_result,   /Applications/MAMP/htdocs/hjc/view_consultations.php中给出的布尔值   在第77行

我在上面的代码中指出了第77行。

我不确定我的代码有什么问题。

3 个答案:

答案 0 :(得分:0)

  

警告:mysqli_num_rows()期望参数1为mysqli_result,   /Applications/MAMP/htdocs/hjc/view_consultations.php中给出的布尔值   在第77行

这表示您的查询未正确运行。这可能与在PHP中运行查询的两个元素之一有关:连接和查询本身。

我要做的第一件事就是检查变量$_POST['name']是否仅使用echo $_POST['name']正确设置

第二个调试步骤是使用您之前为名称回显的值直接在数据库中运行查询。

第三个调试步骤是改变你在PHP代码中运行查询的方式,而不是抑制错误(你在@之前做)。

$r = mysqli_query ($dbc, $q) or die(mysqli_error($dbc).'<br>'.$q);

如果前两个步骤正常并且此操作失败,则表明连接出错。那么它可能是你包含了错误的文件,或者由于某些原因无法建立连接。

答案 1 :(得分:-1)

假设您的$dbc来自附带的文件....
假设你的代码不存在于类或函数中,而是一个简单的页面....
您的错误消息告诉您您的查询有错误 将您的$r = @mysqli_query ($dbc, $q);更改为以下内容:
$r = mysqli_query ($dbc, $q) or die(mysqli_error($dbc).'<br>'.$q); 这有助于您在查询中调试错误

现在,如果您的代码在函数内部运行,则需要具有以下内容: global $dbc;位于您的功能之上(以使您的连接可用)

答案 2 :(得分:-1)

mysqli_query()必须返回false,因为如果查询失败,则mysqli_query()将返回false。您需要执行以下操作:

$r = @mysqli_query ($dbc, $q); // Run the query.
$num = 0;
if ($r)
    $num = mysqli_num_rows($r);

参考:http://php.net/manual/en/mysqli.query.php#refsect1-mysqli.query-returnvalues