MySQL предупреждение, я не могу встряхнуть - PullRequest
0 голосов
/ 28 марта 2012

Я пытался построить таблицу с информацией, которую хотел бы, и теперь я боролся с предупреждением о том, что я не могу встряхнуть.

Предупреждение: 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 ]

1 голос
/ 28 марта 2012

Проблема в том, что mysql возвращает ложную оценку результата. Чтобы узнать больше о проблеме, выполните следующие действия:

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

Надеюсь, это поможет.

0 голосов
/ 28 марта 2012

У вас есть ошибочная запятая после room_id в вашем предложении ORDER BY.
Как указано выше, вам нужна правильная обработка ошибок.Например,

<code>// 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), '
';echo '
', htmlspecialchars(mysqli_error($dbc)), '
';умереть;}

, что слишком болтливо для производственного кода (не печатайте запрос и сообщение об ошибке какому-либо произвольному пользователю, см. http://cwe.mitre.org/data/definitions/209.html), но помогает найти ошибки.

0 голосов
/ 28 марта 2012

Избавиться от запятой после запятой room_id:

ORDER BY start_time, room_id, ";

0 голосов
/ 28 марта 2012

Это происходит потому, что ваш mysqli_query вызов в $data = mysqli_query($dbc, $query); возвращает false, что означает, что с вашим запросом что-то не так.

попробуйте http://php.net/manual/en/mysqli.error.php сразу после вызова mysqli_query, чтобы увидеть, что он производит

...