Retrieving information. Supplied argument is not a valid MySQL result resource.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daan van der Spek

Daan van der Spek

26/07/2011 12:16:44
Quote Anchor link
Hallo iedereen.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>";
    }
    }


?>


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
 
PHP hulp

PHP hulp

09/05/2024 05:17:07
 
Joren de Wit

Joren de Wit

26/07/2011 12:19:55
Quote Anchor link
Bouw degelijke foutafhandeling in. Als een query mislukt, hetgeen nu gebeurt, wil je daar een duidelijk melding van krijgen.

Toevoeging op 26/07/2011 12:20:24:

Lees: SQL beginnershandleiding
 
Daan van der Spek

Daan van der Spek

26/07/2011 12:21:52
Quote Anchor link
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:

Toevoeging op 26/07/2011 12:20:24:

Lees: SQL beginnershandleiding


Joren over je Beginnershandleiding, ik ben geen beginner, script al met MySQL over een periode van meer dan 2 jaar.
 
- SanThe -

- SanThe -

26/07/2011 12:24:09
Quote Anchor link
Foutafhandeling ontbreekt. Bouw dit in en de juiste foutmelding zal op je schern verschijnen.
 
Daan van der Spek

Daan van der Spek

26/07/2011 12:25:28
Quote Anchor link
- 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.
 
- SanThe -

- SanThe -

26/07/2011 12:30:18
Quote Anchor link
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?
 
Daan van der Spek

Daan van der Spek

26/07/2011 12:31:52
Quote Anchor link
- 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.
 
- Ariën  -
Beheerder

- Ariën -

26/07/2011 12:32:40
Quote Anchor link
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.
Gewijzigd op 26/07/2011 12:33:40 door - Ariën -
 
Daan van der Spek

Daan van der Spek

26/07/2011 12:33:23
Quote Anchor link
foutafhandeling die ik onder andere heb is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if($res == false)
{
 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.
 
Joren de Wit

Joren de Wit

26/07/2011 12:34:09
Quote Anchor link
Je fout zit op regel 28 en 55. Daar overschrijf je $res terwijl je die nodig hebt in je while loop...
 
Daan van der Spek

Daan van der Spek

26/07/2011 12:34:24
Quote Anchor link
- 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.

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.
 
- Ariën  -
Beheerder

- Ariën -

26/07/2011 12:37:45
Quote Anchor link
En met deze structuur:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
}

?>


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 -
 
- SanThe -

- SanThe -

26/07/2011 12:40:20
Quote Anchor link
Backtics horen niet in een query thuis.
En $vars hou je buiten de quotes.
Gewijzigd op 26/07/2011 12:41:20 door - SanThe -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.