Retrieving information. Supplied argument is not a valid MySQL result resource.
Ik ben met een systeem bezig waar ik weerinformatie (gecodeerd met luchtvaart-standaarden) ophaal via wx.ivao.aero, en dat gooi ik de MySQL database in.
Ik heb in het tabel waar ik de DepICAO's (codes van vliegvelden) binnenhaal meerdere van hetzelfde staan, en ik wil maar 1 keer hetzelfde vliegveld opvragen.
Gek genoeg haalt ie alleen 1 weerinfo binnen.
Voor alle duidelijkheid, ik heb de username en password in het echte script natuurlijk wel ingevult
Ik krijg het niet opgelost.
Kunnen jullie eens kijken?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
//Connect
mysql_connect("localhost", "ips", "feelingIPS") or die(mysql_error());
mysql_select_db("feelingVA") or die(mysql_error());
//Set and execute query
$sql="SELECT * FROM feelingWEBSITE_flights";
$DepDinges="";
$res=mysql_query($sql);
$num=mysql_num_rows($res);
//execute whileloop
while($rij = mysql_fetch_object($res)){
$DepICAO=$rij->DepICAO;
//if this airfield was not retrieved yet, retrieve and update or insert.
if($DepDinges!==$DepICAO){
$DepDinges=$DepICAO;
$myFile = "http://wx.ivao.aero/metar.php?id='".$DepDinges."'";
$fh = fopen($myFile, 'r');
$METAR = fread($fh, 1000);
fclose($fh);
$sql="SELECT `ICAO` FROM `feelingWEBSITE_WeatherDep` WHERE `ICAO` = '$DepDinges'";
$num=mysql_num_rows(mysql_query($sql));
if($num==1){
$sql="UPDATE `feelingWEBSITE_WeatherDep` SET `WX` = '$METAR' WHERE `ICAO` = '$DepDinges'";
} else {
$sql="INSERT INTO `feelingWEBSITE_WeatherDep` VALUES ('$DepDinges', '$METAR')";
}
$res=mysql_query($sql);
echo "Written $DepDinges<br>";
}
}
//do the same but then for other table
$sql="SELECT `DesICAO` FROM `feelingWEBSITE_flights`";
$res=mysql_query($sql);
$num=mysql_num_rows($res);
while($rij = mysql_fetch_object($res)){
$DepICAO=$rij->DesICAO;
if($DepDinges!==$DepICAO){
$DepDinges=$DepICAO;
$myFile = "http://wx.ivao.aero/metar.php?id=$DepDinges";
$fh = fopen($myFile, 'r');
$METAR = fread($fh, 1000);
fclose($fh);
$sql="SELECT `ICAO` FROM `feelingWEBSITE_WeatherDes` WHERE `ICAO` = '$DepDinges'";
$num=mysql_num_rows(mysql_query($sql));
if($num==1){
$sql="UPDATE `feelingWEBSITE_WeatherDes` SET `WX` = '$METAR' WHERE `ICAO` = '$DepDinges'";
} else {
$sql="INSERT INTO `feelingWEBSITE_WeatherDes` VALUES ('$DepDinges', '$METAR')";
}
$res=mysql_query($sql);
echo "Written $DepDinges<br>";
}
}
?>
//Connect
mysql_connect("localhost", "ips", "feelingIPS") or die(mysql_error());
mysql_select_db("feelingVA") or die(mysql_error());
//Set and execute query
$sql="SELECT * FROM feelingWEBSITE_flights";
$DepDinges="";
$res=mysql_query($sql);
$num=mysql_num_rows($res);
//execute whileloop
while($rij = mysql_fetch_object($res)){
$DepICAO=$rij->DepICAO;
//if this airfield was not retrieved yet, retrieve and update or insert.
if($DepDinges!==$DepICAO){
$DepDinges=$DepICAO;
$myFile = "http://wx.ivao.aero/metar.php?id='".$DepDinges."'";
$fh = fopen($myFile, 'r');
$METAR = fread($fh, 1000);
fclose($fh);
$sql="SELECT `ICAO` FROM `feelingWEBSITE_WeatherDep` WHERE `ICAO` = '$DepDinges'";
$num=mysql_num_rows(mysql_query($sql));
if($num==1){
$sql="UPDATE `feelingWEBSITE_WeatherDep` SET `WX` = '$METAR' WHERE `ICAO` = '$DepDinges'";
} else {
$sql="INSERT INTO `feelingWEBSITE_WeatherDep` VALUES ('$DepDinges', '$METAR')";
}
$res=mysql_query($sql);
echo "Written $DepDinges<br>";
}
}
//do the same but then for other table
$sql="SELECT `DesICAO` FROM `feelingWEBSITE_flights`";
$res=mysql_query($sql);
$num=mysql_num_rows($res);
while($rij = mysql_fetch_object($res)){
$DepICAO=$rij->DesICAO;
if($DepDinges!==$DepICAO){
$DepDinges=$DepICAO;
$myFile = "http://wx.ivao.aero/metar.php?id=$DepDinges";
$fh = fopen($myFile, 'r');
$METAR = fread($fh, 1000);
fclose($fh);
$sql="SELECT `ICAO` FROM `feelingWEBSITE_WeatherDes` WHERE `ICAO` = '$DepDinges'";
$num=mysql_num_rows(mysql_query($sql));
if($num==1){
$sql="UPDATE `feelingWEBSITE_WeatherDes` SET `WX` = '$METAR' WHERE `ICAO` = '$DepDinges'";
} else {
$sql="INSERT INTO `feelingWEBSITE_WeatherDes` VALUES ('$DepDinges', '$METAR')";
}
$res=mysql_query($sql);
echo "Written $DepDinges<br>";
}
}
?>
dit is de fout die ik krijg:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/feelingvirtual.com/httpdocs/v1/makeweather.php on line 11
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/feelingvirtual.com/httpdocs/v1/makeweather.php on line 38
Gewijzigd op 26/07/2011 12:17:28 door Daan van der Spek
Joren de Wit op 26/07/2011 12:19:55:
Bouw degelijke foutafhandeling in. Als een query mislukt, hetgeen nu gebeurt, wil je daar een duidelijk melding van krijgen.
Hey joren. Bedankt. Maar dit heb ik al gedaan. Om de code nu niet onduidelijk te maken heb ik dat weggelaten. De SQL heb ik nog gecheckt met PHPMyAdmin en dit is niet het foute ding.
Wel vind ik uit dat het 1e veld goed gaat (foutchecks) en vanaf het 2e veld in feelingWEBSITE_flights gaat het fout en stopt het script.
Toevoeging op 26/07/2011 12:22:46:
Joren de Wit op 26/07/2011 12:19:55:
Joren over je Beginnershandleiding, ik ben geen beginner, script al met MySQL over een periode van meer dan 2 jaar.
Foutafhandeling ontbreekt. Bouw dit in en de juiste foutmelding zal op je schern verschijnen.
- SanThe - op 26/07/2011 12:24:09:
Foutafhandeling ontbreekt. Bouw dit in en de juiste foutmelding zal op je schern verschijnen.
Ik begin in herhaling te vallen.
Hey SanThe. Bedankt. Maar dit heb ik al gedaan. Om de code nu niet onduidelijk te maken heb ik dat weggelaten. De SQL heb ik nog gecheckt met PHPMyAdmin en dit is niet het foute ding.
Je query zal mislukt zijn. Bij juiste foutafhandeling krijg je dan een andere error waarin de fout direct is af te lezen. Welke error is dat dan?
- SanThe - op 26/07/2011 12:30:18:
Je query zal mislukt zijn. Bij juiste foutafhandeling krijg je dan een andere error waarin de fout direct is af te lezen. Welke error is dat dan?
Mijn query is niet mislukt. Mijn query is een gewone select query die ik nog heb uitgeprobeert in andere scripts en via PHPMyAdmin. Ik krijg dus GEEN error.
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/feelingvirtual.com/httpdocs/v1/makeweather.php on line 11
Je zegt dat je dit hebt weggelaten om de code duidelijker te maken, maar blijkbaar ben je toch ergens foutafhandeling vergeten. Met mysql_error() en het echo'en van je query zou je zeker meer duidelijkheid moeten krijgen.
Gewijzigd op 26/07/2011 12:33:40 door - Ariën -
Code (php)
1
2
3
4
2
3
4
if($res == false)
{
echo("Er ging iets fout met de query: ".mysql_error($conn)." (".$sql.")");
}
{
echo("Er ging iets fout met de query: ".mysql_error($conn)." (".$sql.")");
}
Dit levert geen fouten op. Het is ook zo dat ie het 1e veld prima doet maar dat ie bij het 2e veld stopt.
Je fout zit op regel 28 en 55. Daar overschrijf je $res terwijl je die nodig hebt in je while loop...
- Aar - op 26/07/2011 12:32:40:
Als je nou goede foutafhandeling bouwt, zal je nooit zo'n onduidelijke foutmelding als dit krijgen:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/feelingvirtual.com/httpdocs/v1/makeweather.php on line 11
Je zegt dat je dit hebt weggelaten om de code duidelijker te maken, maar blijkbaar ben je toch ergens foutafhandeling vergeten. Met mysql_error() en het echo'en van je query zou je zeker meer duidelijkheid moeten krijgen.
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/feelingvirtual.com/httpdocs/v1/makeweather.php on line 11
Je zegt dat je dit hebt weggelaten om de code duidelijker te maken, maar blijkbaar ben je toch ergens foutafhandeling vergeten. Met mysql_error() en het echo'en van je query zou je zeker meer duidelijkheid moeten krijgen.
Foutafhandeling zie post.
Echoen van Query heeft geen zin want dat is gewoon "SELECT * FROM `feelingWEBSITE_flights`" en daar worden geen variables ingevoegd.
Toevoeging op 26/07/2011 12:35:50:
Joren de Wit op 26/07/2011 12:34:09:
Je fout zit op regel 28 en 55. Daar overschrijf je $res terwijl je die nodig hebt in je while loop...
Hihi dom foutje. Daarvoor vroeg ik jullie nou. Joren bedankt. Slotje graag.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql="SELECT * FROM feelingWEBSITE_flights";
$res=mysql_query($sql);
$num=mysql_num_rows($res);
if($res) {
while($rij = mysql_fetch_object($res)){
// lijn 13 t/m 30 hier..
}
} else {
echo "Fout: ".mysql_error();
}
?>
$sql="SELECT * FROM feelingWEBSITE_flights";
$res=mysql_query($sql);
$num=mysql_num_rows($res);
if($res) {
while($rij = mysql_fetch_object($res)){
// lijn 13 t/m 30 hier..
}
} else {
echo "Fout: ".mysql_error();
}
?>
Edit
Ah, mooi.. opgelost dus.. :-)
Quote:
Slotje graag.
Waarom? Je topic is toch niet tegen de regels ;-)?
Gewijzigd op 26/07/2011 12:39:26 door - Ariën -
En $vars hou je buiten de quotes.
Gewijzigd op 26/07/2011 12:41:20 door - SanThe -