[PHP] melding van een ongeldige msql resource

Pagina: 1
Acties:
  • 102 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Rigi
  • Registratie: September 2001
  • Laatst online: 30-11-2018
Omdat ik waarschijnlijk een heleboel interviews (onderzoeken) moet gaan doen ben ik een programmaatje aan het maken dat de php code voor mij genereerd. Dus moet ik een veel abstraheren om dat zo simpel mogelijk te maken. Ik heb dus een aantal functies gemaakt (een vor elk type vraag) die de vragen afhandelen.

Op zich allemaal niet zo moeilijk, het vragenformulier en de 'databasebouwer' worden goed gegenereerd. Maar de viewer geeft een warning:
Warning: 1 is not a valid MySQL-Link resource in /users/curvedspaces.com/rigi/tester/Tester_view.php on line 33
op deze regels staat deze code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
function JaNee($tabel,$db)
{
    $result = mysql_query("select \"".$tabel."\" from tester",$db);  //regel 33
    $ja = 0;
    $nee = 0;
    $totaal = 0;
    while($article = mysql_fetch_row($result))
    {
        ..
    }
}

Ja, hij geeft ook een melding over die while loop. Maar dat lijkt me duidelijk..
de functie aanroep ziet er zo uit:
PHP:
1
JaNee("vraag1",$db);

waar $db het resultaat is van de mysql_connect en mysql_select_db statements.. (de databse dus..)

Ik heb echt geen idee waardoor dit veroorzaakt wordt.. ik heb in de documentatie van mysql gegeken, maar tabel namen mogen alle characters bevatten die ook in filenamen mogen. (cijfers dus ook). En ik heb ook geprobeerd om "vraag1" te veranderen in "vraag2". maar dat gaf precies dezelfde foutmelding (ook met een 1 dus..).

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

De foutmelding duid erop dat de verbinding met de database niet goed is. Die 1 heeft niks met de 1 in 'vraag1' te maken, maar is de waarde van $db. Het is ook erg handig om tijdens het debuggen mysql_error te gebruiken.

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


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Wtf? :?

je query is select table from tester? Na de from hoort de table te staan hoor.. :? En daar omheen horen ook geen " na mijn weten..

Acties:
  • 0 Henk 'm!

  • Rigi
  • Registratie: September 2001
  • Laatst online: 30-11-2018
Die $db wordt aangemaakt in een apart bestand dat ik 'include' dus $db kan niet fout zijn omdat het bij de andere php's wel klopt.

En ja, de naamgeving is inderdaad best lomp.. $tabel is de kolomnaam..
|:( nja heb ik iig iets om aan te passen..

[ Voor 39% gewijzigd door Rigi op 22-02-2004 17:11 . Reden: reply voor Janoz toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Terranca
  • Registratie: April 2000
  • Laatst online: 18-09 18:25
wat als je $GLOBALS["db"] doorgeeft aan de functie ipv $db?

Acties:
  • 0 Henk 'm!

  • Rigi
  • Registratie: September 2001
  • Laatst online: 30-11-2018
Dan is de '1' in ieder geval weg uit de warning. Maar dan blijft dit nog over:
Warning: Supplied argument is not a valid MySQL-Link resource in /users/curvedspaces.com/rigi/tester/Tester_view.php on line 33

MAW, niet veel verschil dus.

Acties:
  • 0 Henk 'm!

  • Terranca
  • Registratie: April 2000
  • Laatst online: 18-09 18:25
Rigi schreef op 22 februari 2004 @ 17:19:
Dan is de '1' in ieder geval weg uit de warning. Maar dan blijft dit nog over:
Warning: Supplied argument is not a valid MySQL-Link resource in /users/curvedspaces.com/rigi/tester/Tester_view.php on line 33

MAW, niet veel verschil dus.
Hmm, nog een stapje verder, probeer de connectie eens by-reference mee te geven
dus
PHP:
1
function JaNee($tabel,$db)

veranderen in
PHP:
1
function JaNee($tabel,&$db)

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Het is toch helemaal niet nodig om de database connectie mee te geven bij een query?

Maak er gewoon dit van:
PHP:
31
32
33
34
35
36
37
38
39
40
41
42
function JaNee($tabel)
{
    $result = mysql_query("select \"".$tabel."\" from tester");  //regel 33
    $ja = 0;
    $nee = 0;
    $totaal = 0;
    while($article = mysql_fetch_row($result))
    {
        ..
    }
}
?>

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Rigi
  • Registratie: September 2001
  • Laatst online: 30-11-2018
Ook als ik het by reference doe krijg ik die warning..

En spider, als ik zonder $db een query doe krijg ik nog veel meer foutmeldingen.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Rigi schreef op 22 februari 2004 @ 17:08:
Die $db wordt aangemaakt in een apart bestand dat ik 'include' dus $db kan niet fout zijn omdat het bij de andere php's wel klopt.
Dit soort anames zijn natuurlijk fataal. Heb je uberhaupt al geprobeert om ergen mysql_error neer te zetten? De foutmelding betekent gewoon dat op het moment dat je die query uit wilt voeren. $db niet een database verbinding is. Dit kan komen omdat hij neit goed wordt weergegeven of omdat deze helemaal niet open/aangemaakt is.

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


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Ik zou zowieso de quotes uit je query vissen...
dus:
PHP:
1
$result = mysql_query("select $tabel from tester",$db);  //regel 33


Mocht je dat onoverzichtelijk vinden dan netjes met "select" . $tabel ."...."

Daarnaast zou je wel s in de verkeerde DB kunnen zitten:

PHP:
1
$result = mysql_query("select $tabel from DBNAME.tester",$db);  //regel 33


doet dan wonderen...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Rigi
  • Registratie: September 2001
  • Laatst online: 30-11-2018
nja, het bestand dat de connectie regelt ziet er zo uit: (passwd en username zijn idd niet de originele..)
PHP:
1
2
3
4
5
<?php
    $db=mysql_connect("localhost","blaataap","");
    mysql_select_db("databeest",$db);
    echo "\n";
?>

Dus dit lijkt me niet het probleem...

Maar na wat beter bestuderen...er stond nog een tweede include... |:( ik denk niet dat ik nog meer hoef te zeggen of wel? :X

Das echt lomp... |:( |:( |:(

Nja, iig bedankt voor de hulp.. ik ga me wat verder schamen...

[ Voor 38% gewijzigd door Rigi op 23-02-2004 14:20 . Reden: nog wat verder getest.. ]


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
mysql_query Send a MySQL query
usage: resource mysql_query ( string query [, resource link_identifier] )
mysql_select_db Select a MySQL database
usage: bool mysql_select_db ( string database_name [, resource link_identifier ] )
edit:

Hee, dat van Rigi stond er zonet nog niet. Wat een naamgeving van de vars!

Doe es:
PHP:
1
$result = mysql_query($query) or die (mysql_error());

[ Voor 27% gewijzigd door Skaah op 23-02-2004 14:07 ]


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Skaah schreef op 23 februari 2004 @ 14:05:
mysql_query Send a MySQL query
usage: resource mysql_query ( string query [, resource link_identifier] )
mysql_select_db Select a MySQL database
usage: bool mysql_select_db ( string database_name [, resource link_identifier ] )
edit:

Hee, dat van Rigi stond er zonet nog niet. Wat een naamgeving van de vars!

Doe es:
PHP:
1
$result = mysql_query($query) or die (mysql_error());
Zoals ik ook al eerder opmerkte is de link_identifier dus optioneel; ik gebruik hem zelfs nooit :) Ik weet niet of je dat wilt benadrukken of niet ;)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate

Pagina: 1