Autor Zpráva
fatal56ty
Profil
Zdravím, mám tabulku kam ukládám datum a čas do sloupce casdatum-typ DATETIME a teplotu z tepelného senzoru, jehož sloupec se musí jmenovat podle ID toho senzoru a tak název sloupce je 640000089700-typ float. Ale pokud napíši script v php kde se má vyčíst datum,čas a teplota echo "cas a datum: " . $row["casdatum"]. " teplota: " . $row[640000089700]. "<br>"; tak php hlásí chybu, pokud ale název sloupce 640000089700 přepíši třeba na "cislo" php script funguje. Takže je problém v tom, že jsou v názvu sloupce pouze čísla? Databáze v phpmyadmin.
Tomáš123
Profil
fatal56ty:
$row[640000089700]
Ak tam skutočne používaš správnu hodnotu, malo by stačiť obaliť názov stĺpca do úvodzoviek $row["640000089700"]. Tvoj zápis hľadá v poli prvok s číselným kľúčom 640000089700.
lionel messi
Profil
fatal56ty:
mám tabulku kam ukládám datum a čas do sloupce casdatum-typ DATETIME a teplotu z tepelného senzoru, jehož sloupec se musí jmenovat podle ID toho senzoru a tak název sloupce je 640000089700-typ float.

Niečo je zhnité v návrhu databázy (podľa popisu sa to podobá na túto častú chybu: Některé časteji řešené dotazy pro MySQL - FAQ » Musíte pojmenovávat sloupce s indexem (jmeno1, jmeno2, jmeno3, …))…

Odporúčam celý návrh prepracovať.
fatal56ty
Profil
pokud tam dám $row["640000089700"] vypíše se mne ve všech řádcích pouze číslo 640000089700. Pokud je ale název sloupce například písmeno d a poté volám $row["d"] tak se vše vypíše naprosto korektně podle hodnoty na řádku.
Keeehi
Profil
Tak si zjisti, zda a jak to v tom poli máš dostupné.
var_dump($row);
fatal56ty
Profil
Vyčítám data z vlastní mysql databáze tímto skriptem

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "one_wire";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT DATETIME, 64000005E5CBCD28 FROM teplota";          //ID teplotního senzoru DS18B20


$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "cas a datum: " . $row["DATETIME"]. " teplota: " . $row["64000005E5CBCD28"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

Ale takto se mne z databáze načte korektně cas a datum, ale u teploty je na každém řádku jen číslo 64000005E5CBCD28. Pokud ale nahradím jak v mysql databázi-název sloupce a i zde číslo 64000005E5CBCD28 za nějaké slovo například TEPLO, tak se i hodnoty teploty vypíší korektně.

Moderátor Kajman: Přesunuto z Diskuse JPW: Výčet hodnot z databáze.
Kajman
Profil
Dělat si pro každý senzor sloupec není dobré řešení. Také se přikláním k názoru, že je lepší mít více řádků s teplotami pro jednotlivé senzory.

Čísla mají v mysql dotazech přednost, pokud je ošklivě pojmenovaný sloupec jako číslo (klíčové slovo, obsahuje pomlčku atp.), musíte název sloupce ošetřit v sql dotazech. Buď escapováním nebo někdy stačí předřadit tabulkový kontext. Sloupce výsledku navíc můžete přejmovat aliasem.

SELECT `datetime`     AS datum,
       `640000089700` AS teplota
FROM   teplota
ORDER  BY 1

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: