aray binnen aray kan niet naar mysql
ik probeer met python op een raspberry pi 10 temperatuursensoren uit te lezen,
deze via een website in een MYSQL database te zetten (Hosting2go) zodat ik hier uiteindelijk grafieken mee kan maken e.d.
Het uiteindelijke doel is de aansturing van een zonneboiler met vloerverwarming en houtkachel e.d.
Stukje bij beetje kom ik steeds verder en lukt het steeds meer. Ik leer er uiteraard enorm veel van.
Maar nu loop ik tegen een probleem aan.
ik gebruik de volgende regel om (een deel van) de records toe te voegen:
$sql="INSERT INTO $tbl_name(DATETIME, S0, S1, KLEPBRON, KLEPWW)VALUES('$today', '$datas[0]', '$datas[1]', '$var1', '$var2')";
op zich lukt dat wel, alleen komen er in de velden S0 en S1 ARAY te staan ipv de temperatuur.
print (sensor_Raw) in python geeft:
{0: [19.0], 1: [18.875], 2: [18.812], 3: [18.937], 4: [19.125], 5: [19.125], 6: [19.25], 7: [18.937], 8: [19.125], 9: [19.375]}
Deze data wordt met json gepost naar de PHP op de server.
print_r($data); in PHP geeft
Array
(
[0] => Array
(
[0] => 19
)
[1] => Array
(
[0] => 18.875
)
[2] => Array
(
[0] => 18.812
)
[3] => Array
(
[0] => 18.937
)
[4] => Array
(
[0] => 19.125
)
[5] => Array
(
[0] => 19.125
)
[6] => Array
(
[0] => 19.25
)
[7] => Array
(
[0] => 18.937
)
[8] => Array
(
[0] => 19.125
)
[9] => Array
(
[0] => 19.375
)
)
Mijn vraag is, hoe haal ik de arays uit de aray? Ik heb met explode zitten proberen, maar dat lukt om de een of andere reden niet. Eigenlijk wil ik ook weten waarom dit zo gebeurd.
ik maak een denkfout geloof ik, ik weet alleen niet welke.
Wie weet waar dit fout gaat?
Gewijzigd op 03/01/2014 23:41:00 door Robert v Ommen
Data 0: 19.125000<br>Data 0: 19.000000<br>Data 0: 18.875000<br>Data 0: 19.062000<br>Data 0: 19.125000<br>Data 0: 19.187000<br>Data 0: 19.250000<br>Data 0: 19.062000<br>Data 0: 19.062000<br>Data 0: 19.312000<br>
Dit is niet een aray waar ik verder mee kan, of wel? Allemaal data 0.
Ik wil ook graag begrijpen hoe ik die arays binnen de aray gekregen heb, zodat ik daar de code kan aanpassen.
Groeten Robert
Code (php)
Ik weet verder niet echt wat je wilt, dus dan moet je wat duidelijker zijn.
Mijn python programma haalt temperaturen van sensoren op en zet deze in een aray. (dictionary) Dat is dus deze lijst: {0: [19.0], 1: [18.875], 2: [18.812], 3: [18.937], 4: [19.125], 5: [19.125], 6: [19.25], 7: [18.937], 8: [19.125], 9: [19.375]}
Maar wanneer ik deze dus verzend, met urlencode vanuit python naar de webserver, die deze waardes in de mysql gaat zetten, gaat het fout. Er komen arays binnen de aray. Waarom is dat vraag ik me af.
Toevoeging op 04/01/2014 09:17:16:
Overigens is dit het resultaat van de eerdere code:
Data 1: 17.000000
Data 1: 16.875000
Data 1: 17.000000
Data 1: 17.062000
Data 1: 17.187000
Data 1: 17.250000
Data 1: 17.000000
Data 1: 17.062000
Data 1: 17.312000
Toevoeging op 04/01/2014 09:18:49:
Wat ik eigenlijk wil is één aray waar ik dan mbv $datas[0] en $datas[1] de waardes uit kan halen
Ik denk daarom dat je query zou moeten zijn:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sql="INSERT INTO $tbl_name(DATETIME, S0, S1, KLEPBRON, KLEPWW)
VALUES
('$today', '$datas[0][0]', '$datas[1][0]', '$var1', '$var2')";
?>
$sql="INSERT INTO $tbl_name(DATETIME, S0, S1, KLEPBRON, KLEPWW)
VALUES
('$today', '$datas[0][0]', '$datas[1][0]', '$var1', '$var2')";
?>
of, om problemen te voorkomen,
* met vars buiten quotes
* met escaping van de waarden:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql="INSERT INTO $tbl_name(DATETIME, S0, S1, KLEPBRON, KLEPWW)
VALUES
('". mysql_real_escape_string($today)."',
'". mysql_real_escape_string($datas[0][0])."',
'". mysql_real_escape_string($datas[1][0])."',
'". mysql_real_escape_string($var1) ."',
'". mysql_real_escape_string($var2)."')";
?>
$sql="INSERT INTO $tbl_name(DATETIME, S0, S1, KLEPBRON, KLEPWW)
VALUES
('". mysql_real_escape_string($today)."',
'". mysql_real_escape_string($datas[0][0])."',
'". mysql_real_escape_string($datas[1][0])."',
'". mysql_real_escape_string($var1) ."',
'". mysql_real_escape_string($var2)."')";
?>
Gewijzigd op 04/01/2014 10:46:24 door Ivo P
Dit was mijn eye opener! Je hebt helemaal gelijk en ik snap nu ook waarom het fout ging in mijn python programma. Is opgelost nu en de waardes komen goed in mysql.
Bedankt en Ozzie ook bedankt!!
Groeten Robert
Gewijzigd op 04/01/2014 17:23:31 door Robert v Ommen
Ah stom, die $count = 1; moest op de eerste regel staan!
Is het nu helemaal gelukt?
mvg Robert.
Oké, mooi zo :)