MySQL警告我无法动摇

时间:2012-03-28 08:13:45

标签: php mysqli html-table

我试图建立一个包含我想要的信息的表格,现在我一直在努力寻找一个我无法动摇的警告。

  

警告:mysqli_fetch_array()期望参数1为mysqli_result,   /customers/8/2/e/eldberg.com/httpd.www/tabell15.php中给出的布尔值   第30行Tid:Lokal:

这是从日历中读出预订并显示今天的预订:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Kavalias conferens system</title>
  <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
  <h1>Conference bookings</h1>
  <h2 >todays Conferenses<h2>
  <hr />

<?php
  // Connect to the database 
  $dbc = mysqli_connect('localhost', 'User', 'Pass', 'DB');

   // Retrieve the score data from MySQL
    $query = "SELECT mrbs_entry.room_id, mrbs_entry.start_time, mrbs_entry.name, mrbs_room.room_name
   FROM mrbs_entry
   left outer JOIN mrbs_room on mrbs_entry.room_id = mrbs_room.room_name
   WHERE  mrbs_entry.room_id='Lokal' 
  ORDER BY start_time, room_id, ";

  $data = mysqli_query($dbc, $query);


  // Loop through the array of score data, formatting it as HTML 
  echo '<table>';
  while ($row = mysqli_fetch_array($data)); { 
    // Display the score data
    echo '<tr><td class="scoreinfo">';
    echo '<span class="Guest">' . $row['name'] . '</span></>';
    echo '<strong>Time:</strong> ' . $row['start_time'] . '<br />';
    echo '<strong>Location:</strong> ' . $row['Lokal'] . '</td></tr>';
  }
  echo '</table>';

  mysqli_close($dbc);
?>

</body> 
</html>

4 个答案:

答案 0 :(得分:1)

问题是mysql返回false而不是结果。请执行以下操作以了解有关此问题的更多信息:

$data = mysqli_query($dbc, $query) or die(mysql_error());

希望它有所帮助。

答案 1 :(得分:0)

这是因为mysqli_query中的$data = mysqli_query($dbc, $query);调用返回false,表示您的查询有问题。

在调用mysqli_query之后立即尝试http://php.net/manual/en/mysqli.error.php以查看它产生的内容

答案 2 :(得分:0)

在room_id之后删除尾随的逗号:

  

ORDER BY start_time,room_id,“;

答案 3 :(得分:0)

您的ORDER BY子句中room_id后面有一个错误的逗号 如前所述,您需要正确的错误处理。 E.g。

// Connect to the database 
$dbc = mysqli_connect('localhost', 'User', 'Pass', 'DB');
if ( !$dbc ) {
    die('Connect Error: ' . mysqli_connect_error());
}

// Retrieve the score data from MySQL
$query = "
    SELECT
        mrbs_entry.room_id, mrbs_entry.start_time, mrbs_entry.name, 
        mrbs_room.room_name
    FROM
        mrbs_entry
    LEFT OUTER JOIN
        mrbs_room
    ON
        mrbs_entry.room_id = mrbs_room.room_name
    WHERE 
        mrbs_entry.room_id='Lokal' 
    ORDER BY
        start_time, room_id
";

$data = mysqli_query($dbc, $query);
if ( !$data ) {
    echo '<pre>', htmlspecialchars($query), '</pre>';
    echo '<pre>', htmlspecialchars(mysqli_error($dbc)), '</pre>';
    die;
}

对于生产代码来说有点过于繁琐(不要将查询和整个错误消息打印到任何任意用户,请参阅http://cwe.mitre.org/data/definitions/209.html),但可以帮助您查找错误。