Autor | Zpráva | ||
---|---|---|---|
fatal56ty Profil |
#1 · Zasláno: 21. 3. 2016, 21:09:40
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 |
#2 · Zasláno: 21. 3. 2016, 21:54:29
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 |
#3 · Zasláno: 21. 3. 2016, 22:00:38
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 |
#4 · Zasláno: 22. 3. 2016, 18:22:15
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 |
#6 · Zasláno: 22. 3. 2016, 18:50:04 · Upravil/a: Moderátor (editace znemožněna) 22. 3. 2016, 21:29:22
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 |
#7 · Zasláno: 22. 3. 2016, 21:37:57
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 |
||
Časová prodleva: 8 let
|
0