[PHP&MySQL] Krijg "random" error meldingen

Pagina: 1
Acties:

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
Krijg regelmatig de melding:
code:
1
2
Warning: Supplied argument is not a valid MySQL result resource 
in /sites/vanvossen/public/index.php on line 281


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
// *KNIP*
          @ $db = mysql_pconnect("testserver.loc", "xxxx", "xxxxx");
          if (!$db) {
             echo "<center><p class=\"TitleRood\">Database Error</p>";
             echo "<p class=\"txtGrijs \">Onze excuses, daar een technische storing,<br> is de ";
             echo "database server niet te bereiken. <br>Probeer het later nog eens!</p></center>";
          } else {
             $query = "select * from photos where photo_id=".$photoid."";
             $result = mysql_query($query);

             $record = mysql_fetch_array($result);

             //Een heleboel HTML/PHP code die niet terzaken is!
          }
// *KNIP*
?>

Regel 281 is:
PHP:
1
2
3
<?
             $record = mysql_fetch_array($result);
?>

Ik vraag me af wat de oorzaken kunnen zijn:
1) Bug in de php-code... lijkt mij niet... want anders zou ik consequent deze foutmelding moeten krijgen met het laden van de pagina.

2) Een te langzame MySQL server... dat bij veel requests de server het zelf niet meer snapt, ik hoop dat het dat eigenlijk is... de site draait nu nog op een testserver... de "echte" server moet nog helemaal besteld worden :P
Specs testserver:
Hardware:
- AMD K6-II 500Mhz
- 512 MB PC100 Dane-Elec
- 60GB HD
Software:
- mysql Ver 11.15 Distrib 3.23.37, for suse-linux (i686)
- Linux athos 2.4.4-4GB #1 Fri May 18 14:11:12 GMT 2001 i586 unknown
- Apache 1.3.19
- PHP Version 4.0.4pl1

3) Of software van nieuwe versies voorzien

4) Een andere factor die ik over het hooft zie. |:(

Ik vermoed zelf eigenlijk dat het oorzaak 2 is... maar misschien dat jullie mij meer kunnen vertellen.

Nog even voor de duidelijkheid... de melding krijg ik met name als ik met IE regelmatig op F5 ram... of gewoon als ik een pagina probeer te laden! :7

Ben op het gebied van poeters geen newbie... maar ik snap ût nu ff niet meer :'(

EDIT: 13.56U 26-02-2002
PHP:
1
2
3
<?
@ $db = mysql_pconnect("testserver.loc", "xxxx", "xxxxx");
?>

De variabelen server, username en password zijn met opzet gewijzigd!
Ik geef je toch ook niet mijn pincode en een image-file van mijn pinpas :+

My weblog


  • Grum
  • Registratie: Juni 2001
  • Niet online
@ $db = mysql_pconnect("testserver.loc", "xxxx", "xxxxx");
^
||
||
||
||
||
|| <-- jah dat is dus de pijl!
||
||
||
||
||
||
||
||

genoeg hint ? :P

[meer uitleg]

er kan probably geen connectie met de db server worden gemaakt maar zo te zien is je code ook niet al te efficient (ik zie bv al een 'select *' staan in je query)

* Grum leest slecht

je mist een mysql_select_db zover als ik nu ook even snel zie :P

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
Op dinsdag 26 februari 2002 13:55 schreef Grum_ het volgende:
@ $db = mysql_pconnect("testserver.loc", "xxxx", "xxxxx");


genoeg hint ? :P
Heb met opzet de servernaam en username/password even geedit... ben niet een beetje dom ;)

My weblog


  • Grum
  • Registratie: Juni 2001
  • Niet online
snap je em nu ? >:)

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
(ik zie bv al een 'select *' staan in je query)
Maarruh ik moet toch echt alle data uitlezen van dat record ;)
Heb niet echt zin om alle velden te gaan typen als 'select *'hetzelfde doet ;)

Wat betreft mysql_select_db gaan we eens proberen.

My weblog


Verwijderd

er kan probably geen connectie met de db server worden gemaakt maar zo te zien is je code ook niet al te efficient (ik zie bv al een 'select *' staan in je query)
SELECT * is helemaal niet inefficient...want als jij de alle velden uit een tabel moet hebben, ga je deze toch niet allemaal speciferen...athans...mischien jij wel!
Ik in iedergeval niet....

  • Grum
  • Registratie: Juni 2001
  • Niet online
beter vroeg afleren dan later frustraties krijgen ;)

je snapt m'n hint btw nog niet .. der staat een 'enorme' pijl heen incl bold/italic/underline

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
Op dinsdag 26 februari 2002 14:05 schreef Grum_ het volgende:
beter vroeg afleren dan later frustraties krijgen ;)

je snapt m'n hint btw nog niet .. der staat een 'enorme' pijl heen incl bold/italic/underline
Explain

Ben niet een beetje leergierig... ben het heel erg! (8>

Moet die @ weg :?

Ik heb die al vaker gebruik zonder problemen.

My weblog


  • Grum
  • Registratie: Juni 2001
  • Niet online
pfft :+

ff half-retorisch:
Vraag - wat doet een @ in je code ?
Antw. - die onderdrukt mijn errors
Vraag - gaat er iets mis ?
Antw. - jah! :'(
Vraag - zie je errors ?
Antw. - nee! :'(
Vraag - Valt de 10-eurocent al ?
Antw. - [vul in >:) ]

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
Op dinsdag 26 februari 2002 14:07 schreef Grum_ het volgende:
pfft :+

wat doet een @ in je code ?
Ik heb die @ uit het boek: PHP and MySQL, alle listings die ze daar gebruiken staat een @! *D

My weblog


  • Grum
  • Registratie: Juni 2001
  • Niet online
* Grum gooit 10-eurocent op

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
Op dinsdag 26 februari 2002 14:07 schreef Grum_ het volgende:
pfft :+

ff half-retorisch:
Vraag - wat doet een @ in je code ?
Antw. - die onderdrukt mijn errors
Vraag - gaat er iets mis ?
Antw. - jah! :'(
Vraag - zie je errors ?
Antw. - nee! :'(
Vraag - Valt de 10-eurocent al ?
Antw. - [vul in >:) ]
Lol... ik snapt um... alleen reageer ik iets te snel op je reacties... dan heb jij de volgende alweer geplaatst! 8-)

Leuk zo'n forum... alleen je gedachten erbij houden ;)

My weblog


  • Grum
  • Registratie: Juni 2001
  • Niet online
mja ik dacht laat ik es niet in bitchmode schieten en ff 'flauw' helpen

maareuh

error_reporting(E_ALL) en geen (onnodig, ja je kan dus situaties verzinnen dat het wel nodig is) gebruik van de error-onder-drukkende-apestaart scheelt heel wat :)

daarnaast heb je ook nog mysql_error() welke je ook veel kan vertellen over evt fouten :)

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
           
           @$db = mysql_pconnect("testserver.loc", "xxxx", "xxxxx");
           if (!$db) {
                echo "<center><p class=\"TitleRood\">Database Error</p>";
             echo "<p class=\"txtGrijs \">Onze excuses, daar een technische storing,<br> is de ";
             echo "database server niet te bereiken. <br>Probeer het later nog eens!</p></center>";
           } else {
           $query = "select * from photos where photo_id=$photoid";
           //specificeer de database link identifier die je wilt gebruiken, normaal pakt PHP de laatste geopende
           //maar dit wil ook weleens fout gaan...
           //verder is het verstand om or die("") te gebruiken voor fout correctie.
           $result = mysql_query($query,$db) or die("ERROR IN QUERY");
           $record = mysql_fetch_array($result); 
?>

Probeer bovenstaant eens!

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
* capedro gaat toch eens wat @-jes weghalen... ik dacht dat het gewoon deel van de syntax was.

Grum_ heb je je 10 eurocent alweer opgeraapt ;)
mja ik dacht laat ik es niet in bitchmode schieten en ff 'flauw' helpen
Vind ik aardig van je ;)
Nou ben ik niet bepaald een newbie op het gebied van servers e.d maar dit is toch wel een deel on-ontgonnen gebied in mijn hersenen... dacht ook laat ik flauw een boek kopen erover... maar ja.... dat is ook niet alles (8>

My weblog


  • Grum
  • Registratie: Juni 2001
  • Niet online
ik haat boeken ;)
ik haat mensen die coden zonder error_reporting(E_ALL);
ik haat unindented code
ik haat .... o well ;))

Verwijderd

[off topic]
Grum ik ben dan wel geen (lite) mod.. maar toch wil ik ff zeggen dat die toon die je aanslaat tegen: capedro, mij niet echt bevalt..
[/off topic]

Capedro, zet eens echo mysql_error(); voor je fetch_array.. volgens mij zit er een fout in je query of ben je niet goed geconnect aan je db server

die @ is alleen goed als je zelf de error handeling wilt doen en dus de php errors wilt weg laten, voorbeelden:
PHP:
1
2
3
4
5
6
7
8
<?
if(!@mysql_pconnect(..)){
  echo "Sorry we konden niet verbinden met de server, kom later terug";
}

//of:
@mysql_pconnect(...) or die("Sorry we konden niet connecten met de db server");
?>

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Uhm zou het ook niet gewoon kunnen dat je
code:
1
$query = "select * from photos where photo_id=".$photoid."";

geen resultaat teruggeeft? Je $photoid is nl. variabel.

Owjah haal ook ff die ."" weg achter dat $photoid

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
Op dinsdag 26 februari 2002 15:02 schreef Glimi het volgende:
Uhm zou het ook niet gewoon kunnen dat je
code:
1
$query = "select * from photos where photo_id=".$photoid."";

geen resultaat teruggeeft? Je $photoid is nl. variabel.

Owjah haal ook ff die ."" weg achter dat $photoid
Geeft wel resultaat... 100% zeker weten ;)

Want... anders zou het een consequente error moeten zijn als ik op F5 zit te rammen >:)

Er komen 10.000 photo's in die database... dus $photoid als variabel is wel slim :+

My weblog


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Laat me raden.... je 'random' foutmelding treed op waneer je geen fotoid meegeeft.........

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

sorry verkeerd gekeken

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
Op dinsdag 26 februari 2002 15:07 schreef Janoz het volgende:
Laat me raden.... je 'random' foutmelding treed op waneer je geen fotoid meegeeft.........
Nee... dan is het niet random meer maar consequent omdat er geen photoid is gegeven.

Ik bedoel met random echt... random (in het nederlands: willekeurig) :+

Hij geeft idd een foutmelding als photoid niet gegegeven is... maar ook wel eens als ik bijvoorbeeld:
http://testserver/?page=fotodatabank&imagefile=1&photoid=2
gebruik... en dan vaker de pagina reload....

Echter ik heb nu mysql_select_db er in verwerkt... en tot nu toe ben ik de melding nog niet tegengekomen ;)

My weblog


  • Grum
  • Registratie: Juni 2001
  • Niet online
Op dinsdag 26 februari 2002 14:54 schreef TimD het volgende:
[off topic]
Grum ik ben dan wel geen (lite) mod.. maar toch wil ik ff zeggen dat die toon die je aanslaat tegen: capedro, mij niet echt bevalt..
[/off topic]
Ach zolang ie zelf de lol ervan kan inzien ga ik reacties als deze direct naar /dev/null schuiven.

Het blijkt dat je de thread niet hebt gevolgd zeker omdat er VELEN edits zijn geweest die jij niet hebt gezien en waarschijnlijk had je dan een iets andere mening gehad.

[bitchmode]
Ik raad je een -hoe-moet-ik-smilies-lezen-cursus- aan want zo te zien bak je daar ook niet al te veel van. Lighten up plz .. pfft :+
[/bitchmode]

Schijnbaar heb je nooit mijn eerdere posts gelezen (6mnd terug) ... die hadden nl een veel hoger bitch gehalte. En zoals ik altijd maar zeg ... coden moet je wat voor overhebben ... et gaat niet makkelijk in et begin .. en als je et niet wil leren dan moet je hier ook niet komen maar fijn een cursus putjes-scheppen-op-zee doen.

deze thread kost me al 42 eurocent :P

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op dinsdag 26 februari 2002 15:39 schreef Grum_ het volgende:

[..]

Ach zolang ie zelf de lol ervan kan inzien ga ik reacties als deze direct naar /dev/null schuiven.

Het blijkt dat je de thread niet hebt gevolgd zeker omdat er VELEN edits zijn geweest die jij niet hebt gezien en waarschijnlijk had je dan een iets andere mening gehad.

[knip]
Dat dacht ik ook, tot ik dit zag [topic=423140/1/25] :(

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
[offtopic]
Op dinsdag 26 februari 2002 15:41 schreef Glimi het volgende:

[..]

Dat dacht ik ook, tot ik dit zag [topic=423140/1/25] :(
Niet zozeer dat ik een mietje ben... ben heel wat gewend... maar dat "bitcherige" vind ik toch wat erg...

Ik heb ook redelijk wat ervaring op ander gebied... maar ik ga die persoon ook niet zo hard benaderen...

Als je irl mensen zo benaderd met problemen... kom je jezelf nog wel eens tegen :7

[/offtopic]
[ontopic]
Maarruh... mijn probleem is opgelost! Ook dankzij Grum_!

[/ontopic]

My weblog


  • Grum
  • Registratie: Juni 2001
  • Niet online
Ah ok tis altijd fijn als mensen ook even een GOEDE indicatie geven in de thread wat ze der van vinden of niet.

Maarja .. ik was nog mild .. had ook een (lite)mod kunnen vragen of et topic gesloten mocht worden omdat je simpelweg gewoon niet doet wat in de manual staat.

Namelijk:

mysql_(p)connect
mysql_select_db
mysql_query

Maar ipv daarvan stuur ik je langzaam naar je fout toe ... redelijk spelenderwijs omdat je anders je code zelf niet doorleest en vervolgens de fout alsnog niet zelf vindt.

Maar ok .. ik weet nu wat ik de volgende keer moet doen.

Tnx for reminding me.

(btw NP voor de hulp die je evt wel hebt gehad)

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
Op dinsdag 26 februari 2002 15:51 schreef Grum_ het volgende:
Ah ok tis altijd fijn als mensen ook even een GOEDE indicatie geven in de thread wat ze der van vinden of niet.

Maarja .. ik was nog mild .. had ook een (lite)mod kunnen vragen of et topic gesloten mocht worden omdat je simpelweg gewoon niet doet wat in de manual staat.

Namelijk:

mysql_(p)connect
mysql_select_db
mysql_query

Maar ipv daarvan stuur ik je langzaam naar je fout toe ... redelijk spelenderwijs omdat je anders je code zelf niet doorleest en vervolgens de fout alsnog niet zelf vindt.

Maar ok .. ik weet nu wat ik de volgende keer moet doen.

Tnx for reminding me.

(btw NP voor de hulp die je evt wel hebt gehad)
Het "vreemde" is, dat ik bij alle andere pagina's wel mysql_select_db heb gebruikt... waarom bij deze niet... is mij zelf niet helemaal duidelijk |:(

Ik was er eigenlijk van uit gegaan dat het er bij stond ;(

Maar als jij natuurlijk ook weet dat je met het bakken van scripts/programma's je soms eens een ander moet laten kijken naar de code als er fouten in staan... omdat je het zelf gewoon helemaal niet ziet! Je kan dan uren turen... maar het gewoon niet zien! :+

My weblog


  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Wil toch nog even toevoegen dat een "select *" wel heel inefficient is.

Om deze select nuttige inhoud te geven, gaat de database eerst een db-statement uitvoeren om te achterhalen welke kolommen de tabel bevat en over die kolommen gaat ie de select-statement uitvoeren. Dus:

SELECT * == 2 x zoveel werk als SELECT Kol1,Kol2

Signature van nature


  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
Op dinsdag 26 februari 2002 16:04 schreef Sircuri het volgende:
Wil toch nog even toevoegen dat een "select *" wel heel inefficient is.

Om deze select nuttige inhoud te geven, gaat de database eerst een db-statement uitvoeren om te achterhalen welke kolommen de tabel bevat en over die kolommen gaat ie de select-statement uitvoeren. Dus:

SELECT * == 2 x zoveel werk als SELECT Kol1,Kol2
Dus als ik het goed begrijp moet de SQL server eerst gaan uitzoeken wat de namen van de kolommen zijn met select *. Dus met select Kol1,Kol2 trek je de performance van je server omhoog.
Zo goed begrepen :?

My weblog

Pagina: 1