2016-06-03 5 views
0

Я пытаюсь сделать график из 7 последних записей моей базы данных SQL. Поэтому я попытался выбрать максимальный (или последний введенный) номер id, но он не работает.SQL SELECT MAX (Id)

Мой стол:

Id | id_time | temp | RH 
2700 | 2706 | 24.187 | 63.0999984741211 
2701 | 2707 | 24.25 | 63 
2702 | 2708 | 26.562 | 99.9000015258789 
2703 | 2709 | 25  | 50.456 
2704 | 2710 | 28.2 | 64.48 
2705 | 2711 | 21.541 | 78.45876 
2706 | 2712 | 18.567 | 55.787455465 
2707 | 2713 | 23.25 | 58.54564 
2708 | 2714 | 26.5 | 49.9000015258789 
2709 | 2715 | 25  | 50.456 
2710 | 2716 | 28.2 | 64.48 
2711 | 2717 | 21.541 | 78.45876 
2712 | 2718 | 18.567 | 55.787455465 
2713 | 2719 | 23.25 | 58.54564 
2714 | 2720 | 26.5 | 49.9000015258789 

код питона, который я использовал, чтобы сделать таблицы:

with con: 
cur = con.cursor() 

cur.execute("DROP TABLE IF EXISTS tijd") 
cur.execute("CREATE TABLE tijd(Id INT PRIMARY KEY AUTO_INCREMENT, \ 
      jaar VARCHAR(25), \ 
      maand VARCHAR(25), \ 
      dag VARCHAR(25), \ 
      uur VARCHAR(25), \ 
      minuut VARCHAR(25))") 
cur.execute("DROP TABLE IF EXISTS data") 
cur.execute("CREATE TABLE data(Id INT PRIMARY KEY AUTO_INCREMENT, \ 
      id_tijd VARCHAR(25), \ 
      temp VARCHAR(25), \ 
      RH VARCHAR(25))") 

РНР код, который я использую для выбора данных из базы данных:

 <?php 
     $dbhost = 'localhost'; 
     $dbuser = 'testuser1'; 
     $dbpass = 'loes'; 

     $conn1 = mysql_connect($dbhost, $dbuser, $dbpass); 

     if(! $conn1) { 
      die('Could not connect: ' . mysql_error()); 
     } 


     $sql1 ='SELECT MAX(Id) FROM data'; 
     mysql_select_db('huygendb'); 
     $retval1 = mysql_query($sql1, $conn1); 

     if(! $retval1) { 
      die('Could not get data: ' . mysql_error()); 
     } 

     $max1 = mysql_query($sql1) or die ("no query"); 
     echo "{$max1} <br>"; 
     if ($max1-7 > 0){ 
     $max = $max1 -7;} 
     else{ 
     $max = 0;} 
     echo "{$max} <br>"; 

     mysql_close($conn1); 
     ?> 

Итоговый код:

Resource id #3 
0 

Может быть где-то еще запись с Id = 3, поэтому я догадался, что мои идентификаторы являются строками (потому что «3» выше, чем «2714»), но я действительно думал, что я сделал их целыми буквами? Как я могу исправить PHP-код, чтобы делать то, что я хочу?

+0

Не используйте PHP mysql_ API. – Strawberry

+0

@Strawberry почему? –

+0

Почему? Потому что было обнаружено, что они излучают сигналы, которые отрывают ваш мозг от вашего пупка, делая ненужными любые способности, которые вы могли ранее использовать в поисковой системе. – Strawberry

ответ

0

mysql_query(); возвращает ресурс, а не набор результатов. вам необходимо извлечь данные из него:

$res = mysql_query($sql1) or die ("no query"); 
    $max1 = mysql_fetch_array($res); 
    var_dump($max1); 

И тогда: не используйте функции mysql_ *. Они устарели.

1

Я предполагаю, что вы ищете SQL запрос, следующий запрос будет заказать по имени столбца в порядке убывания моды и возврат 7 рядов

SELECT * FROM table_name ORDER BY column_name DESC LIMIT 7; 
2

Сначала проверьте php docs here. mysql_query возвращает ресурс, а не объект или массив. Чтобы проверить набор результатов из базы данных, вам необходимо пропустить его, как

while ($row = mysql_fetch_assoc($max1)) { 
echo $row['Id']; 
}