Задать вопрос
@Uasyaa

Сложный запрос mysql в php. В чём ошибка?

Здравствуйте! Возникла проблема. Не могу разобраться с синтаксисом сложного sql запроса. phpmyadmin выдаёт такой код:
$sql = "SELECT `daily_statistics`.`Values` , `daily_statistics`.`Id` , `Humidity`.`Humidity` , `Temp`.`Value` \n"
    . "FROM daily_statistics\n"
    . "LEFT JOIN `rgraph_example`.`Humidity` ON `daily_statistics`.`Id` = `Humidity`.`Id` \n"
    . "LEFT JOIN `rgraph_example`.`Temp` ON `daily_statistics`.`Id` = `Temp`.`Id` \n"
    . "LIMIT 0 , 30";


Весь код выглядит так:
<?php 
    
    $db_host = 'localhost';
    $db_name = 'rgraph_example';
    $db_username = 'user';
    $db_password = 'password';
    
    $connect_to_db = mysql_connect($db_host, $db_username, $db_password)
    or die("Could not connect: " . mysql_error());

    mysql_select_db($db_name, $connect_to_db)
    or die("Could not select DB: " . mysql_error());

    $sql = "SELECT `daily_statistics`.`Values` , `daily_statistics`.`Id` , `Humidity`.`Humidity` , `Temp`.`Value` \n"
      "FROM daily_statistics\n"
      "LEFT JOIN `rgraph_example`.`Humidity` ON `daily_statistics`.`Id` = `Humidity`.`Id` \n"
      "LEFT JOIN `rgraph_example`.`Temp` ON `daily_statistics`.`Id` = `Temp`.`Id` \n"
      "LIMIT 0 , 30";
$qr_result = mysql_query($sql); //исправил
or die(mysql_error());

        
  echo '<table border="1">';
  echo '<thead>';
  echo '<tr>';
  echo '<th>id</th>';
  echo '<th>Values</th>';
  echo '<th>Humidity</th>';
  echo '<th>Value</th>';
  echo '</tr>';
  echo '</thead>';
  echo '<tbody>';
  
    
  while($data = mysql_fetch_array($qr_result)){ 
    echo '<tr>';
    echo '<td>' . $data['Id'] . '</td>';
    echo '<td>' . $data['Values'] . '</td>';
    echo '<td>' . $data['Humidity'] . '</td>';
    echo '<td>' . $data['Value'] . '</td>';

    echo '</tr>';
  }
  
    echo '</tbody>';
  echo '</table>';

    // закрываем соединение с сервером  базы данных
    mysql_close($connect_to_db);
?><code lang="php">
</code>
В результате - пустая страница
Главная проблема с синтаксисом $sql . Как правильно этот запрос оформит?
  • Вопрос задан
  • 2882 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
mlnkv
@mlnkv
JavaScript Developer
$qr_result = $sql; // что это??? где вы запрос в базу делаете?

попробуйте так
<?php 
    
  $db_host = 'localhost';
  $db_name = 'rgraph_example';
  $db_username = 'user';
  $db_password = 'password';
    
  $connect_to_db = mysql_connect($db_host, $db_username, $db_password);

  if (!$connect_to_db) {
    die("Could not connect: " . mysql_error());
  }

  if (!mysql_select_db($db_name, $connect_to_db)) {
    die("Could not select DB: " . mysql_error());
  }
  
  $sql = "SELECT `daily_statistics`.`Values` , `daily_statistics`.`Id` , `Humidity`.`Humidity` , `Temp`.`Value` ".
    "FROM daily_statistics LEFT JOIN `rgraph_example`.`Humidity` ON `daily_statistics`.`Id` = `Humidity`.`Id` ".
    "LEFT JOIN `rgraph_example`.`Temp` ON `daily_statistics`.`Id` = `Temp`.`Id` LIMIT 0 , 30";
  
  $result = mysql_query($sql);
  if (!$result) {
    die(mysql_error());
  }
  $data = array();
  while ($row = mysql_fetch_array($qr_result)) {
    $data[] = $row;
  }
?>

<table border="1">
  <thead>
    <tr>
      <th>id</th>
      <th>Values</th>
      <th>Humidity</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
  <?php foreach ($data as $item):?>
    <tr>
      <td><?php echo $item['Id'] ?></td>
      <td><?php echo $item['Values'] ?></td>
      <td><?php echo $item['Humidity'] ?></td>
      <td><?php echo $item['Value'] ?></td>
    </tr>
  <?php endforeach; ?>    
  </tbody>
</table>
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
хехехе
$qr_result = $sql;
Ответ написан
Комментировать
@krypt3r
Я слеп — я не увидел mysql_query.
ЗЫ. Опять эти mysql_* функции =\
Ответ написан
Комментировать
socengel
@socengel
7 лет native php в продакшене, онлайн 20000+,
$qr_result = mysql_query($sql); //исправил
or die(mysql_error());

1. Между функцией mysql_query($sql) и or die(mysql_error()); не должно быть точки с запятой.
2. При подключении к базе нужно передать команду с присвоением кодировки:
mysql_query("SET NAMES UTF8") or die('Не получилось выставить кодировку');

Попробуйте может в этом и весь подвох собственно. Если у вас нет синтаксических ошибок. либо еще каких подводных камней о которых мы не знаем.
Ответ написан
Комментировать
pchelkin
@pchelkin
быдлокодер
Включите вывод ошибок
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы