[PHP]Mysql_fetch_object probleemje

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
Hallo, ik wil iets heel simpels, een loop om een aantal gegevens op het scherm te toveren. Ben pas begonnen met PHP, (overgestapt van ASP -> PHP) en ben nu al heel lang bezig dit :

PHP:
1
2
3
4
5
6
7
8
9
10
     <?php
     $connect_1 = mysql_connect ("$hostname", "$username", "$password") or die (mysql_error());
     mysql_select_db ("$database");
     $query = "SELECT item_id,title,date FROM items WHERE item_type = 'n' ORDER BY item_id DESC LIMIT 5";
     $result = mysql_query($query);
     while ($row = mysql_fetch_object($result))
     { 
     echo "<tr><td>$row->date</td><td><a href=item.php?ItemID=$row->item_id>$row->title</a></td></tr>";
     }
     ?>

werkend te krijgen. Een collega van me die wel goed kan php heeft het nagekeken en hij kan de fout ook niet ontdekken, de SQL query is nix mis mee, die heb ik getest en werkt goed.

de foutmelding is als volgt:
Fatal error: Call to undefined function: mysql_fetch_object() in /hdb1/shtml/secure/evert/evert2/menu.php on line 37
lijn 37 is hier de lijn die met "while" begint... kan iemand me laten zien wat ik fout doen? bvb

mijn bronnen zijn trouwens www.phpfreakz.nl en www.php.net waar ik de voorbeelden bekeken had en zover nagedaan hebt.

[ Voor 14% gewijzigd door Mister_X op 06-02-2003 15:57 ]


Acties:
  • 0 Henk 'm!

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 15-07 09:34

PrinsEdje80

Holographic, not grated...

Probeer eens mysql_fetch_array()

Used to be Down Under... Foto gallery


Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
zelfde error, had die al geprobeert... :(

Acties:
  • 0 Henk 'm!

Verwijderd

das inderdaad een vreemde error.
Weet je zeker dat je de MySQL support goed ingebakken hebt in PHP? Zo ja, welke versie van PHP en MySQL gebruik je?

Want deze error krijg je normaal wanneer je een library niet in je installatie hebt (functie bestaat niet :X)

Acties:
  • 0 Henk 'm!

Verwijderd

mysql_select_db("$database", $jeconnectie);

edit:
je database wordt niet aangeroepen,
daardoor wordt de query niet uitgevoerd.
en werkt de functie mysql_fetch_array() dus niet.

[ Voor 67% gewijzigd door Verwijderd op 06-02-2003 16:11 ]


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 12:25
ferenc:
http://nl.php.net/manual/nl/function.mysql-select-db.php
mysql_select_db() stelt de huidige actieve database in op de server die wordt geassocieerd met de gegeven link identifier. Als er geen link identifier wordt gegeven, wordt de laatst geopende link aangenomen.
dat wat je zegt maakt dus geen niets uit...

[ Voor 8% gewijzigd door Hmmbob op 06-02-2003 16:15 ]

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
staat op de server... is php 4.1.2 en apache is Apache/1.3.22

andere queries werken wel...en me collega die op dezelfde server zit gebruikt alleen maar fetch objects... en die werken wel.

Acties:
  • 0 Henk 'm!

Verwijderd

ja ok, maar vind het dan niet netjes!

genius995
zou dan wel eens gelijk kunnen hebben, code is verder niks mis mee.

Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
     $hostname = "192.168.0.1";
     $username = "xxxx";
     $password = "xxxx";    
     $database = "evert";

     $connect_1 = mysql_connect ("$hostname", "$username", "$password") or die (mysql_error());
     mysql_select_db ("$database");
     $query = "SELECT item_id,title,date FROM items WHERE item_type = 'n' ORDER BY item_id DESC LIMIT 5";
     $result = mysql_query($query);
     while ($row = mysql_fetch_object($result)) { 
     echo "<tr><td>$row->date</td><td><a href=item.php?ItemID=$row->item_id>$row->title</a></td></tr>";
     }

[ Voor 21% gewijzigd door Mister_X op 06-02-2003 16:19 ]


Acties:
  • 0 Henk 'm!

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 17-07 14:45
Zet achter je mysql_query() een:
PHP:
1
or die(mysql_error());

Dan kun je waarschijnlijk wat meer zien ...

Gebruik ook geen $row->bla, maar $row['bla'] i.c.m. mysql_fetch_array();
Als je variabelen in een echo zet, doe dat dan zo:
PHP:
1
$bla = "bla" . $foo . "bla";


Het lijkt er inderdaad op dat je mysql binnen php niet lekker werkt maar als andere queries wel werken ....

Alleen ziet het er wat overzichtelijker uit als je het op bovenstaande manier doet, en ontdek je ook veel makkelijker fouten :)

[ Voor 62% gewijzigd door RupS op 06-02-2003 16:26 ]


Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
ok, ga dat doen, or die (mysql_error()); heb ik er inderdaad net achter gezet maar het levert geen andere error op, dus dat lijkt me allemaal goed te gaan, ga nu effe met die array aan de gang en dan ['bla'] aanpassen

Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
:( zucht,
Fatal error: Call to undefined function: mysql_fetch_array() in /hdb1/shtml/secure/evert/evert2/menu.php on line 35

line 35 is de line die met "while" begint... nog theorien? ideen? alles is welkom, word er een beetje moe van ben er al vanaf 13uur zoet mee. :)

Acties:
  • 0 Henk 'm!

Verwijderd

ik ben nogsteeds van mening dat er iets mis is met de MySQL support die in je PHP zit... (eg. probeer PHP opnieuw te installeren met de originele MySQL libs (van MySQL zelf, niet van PHP))

Dit is echt super wazig... want als er totaal geen MySQL support in zit, zouden alle mysql_ functies niet werken... terwijl dus blijkbaar mysql_connect() en mysql_query() wel werken (toch :?)

Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 12:25
gooi er de nieuwste php-versie overheen...

of laat dat je systeembeheerder doen, ook al goed...

misschien dat t dan verholpen is

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

Verwijderd

maak eens een bestand met
<?php
phpinfo()
?>

daar kan je zien of mysql enabled is.
verder ben ik het met tharups eens, dat het een veel nettere manier is.
dus onthouden zou ik zeggen.

Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
Verwijderd schreef op 06 februari 2003 @ 16:28:
ik ben nogsteeds van mening dat er iets mis is met de MySQL support die in je PHP zit... (eg. probeer PHP opnieuw te installeren met de originele MySQL libs (van MySQL zelf, niet van PHP))

Dit is echt super wazig... want als er totaal geen MySQL support in zit, zouden alle mysql_ functies niet werken... terwijl dus blijkbaar mysql_connect() en mysql_query() wel werken (toch :?)
ja hebt net een andere script gedraait (een registreer jezelf script, met een insert en een count op de user name) en die werkt perfect!

Acties:
  • 0 Henk 'm!

Verwijderd

volgens mij is er maar een oplossing,
een nieuwe php versie erop gooien.
4.23 draait hier goed,
het is trouwens een goed idee om je apache ook te updaten,
1.3.22 is al vrij oud

Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
mysql
MySQL Support enabled
Active Persistent Links 1
Active Links 1
Client API version 3.23.36

dat van tharups heb ik nu
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_INCLUDE -I/usr/include/mysql
MYSQL_LIBS -L/usr/lib/mysql -lmysqlclient -L/usr/lib -z

Acties:
  • 0 Henk 'm!

Verwijderd

Mister_X schreef op 06 februari 2003 @ 16:32:
[...]

ja hebt net een andere script gedraait (een registreer jezelf script, met een insert en een count op de user name) en die werkt perfect!
Maar wat is er dan specifiek ANDERS in het script dat wel werkt dan in jouw script?!?! :?

Acties:
  • 0 Henk 'm!

Verwijderd

... okay... ff iets anders proberen?

Run dit scrippie ns op de server:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
// effe checken
print "MySQL Connect: " . function_exists("mysql_connect") . "<br>\n";
print "MySQL Select DB: " . function_exists("mysql_select_db") . "<br>\n";
print "MySQL Query: " . function_exists("mysql_query") . "<br>\n";
print "MySQL Result: " . function_exists("mysql_result") . "<br>\n";
print "MySQL Fetch Object: " . function_exists("mysql_fetch_object") . "<br>\n";
print "MySQL Fetch Array: " . function_exists("mysql_fetch_array") . "<br>\n";
print "MySQL Fetch Assoc: " . function_exists("mysql_fetch_assoc") . "<br>\n";
?>


Wat is de uitkomst daarvan??

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je hebt het over regel 35, er zijn dus meer regels waar de fout in kunnen zitten dan je ons toont, als je bovenstaand losse stukje apart opslaat en dat uitvoert, krijg je dan nog steeds een not-found melding?

* ACM vindt het overigens heel vreemd dat die melding bij een script wel komt en bij anderen niet...

Alle theorien over vergeten databases of niet geopende links zijn trouwens onzin, daar gaat de functie niet ineens niet van bestaan.

[ Voor 18% gewijzigd door ACM op 06-02-2003 16:53 ]


Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
Verwijderd schreef op 06 februari 2003 @ 16:46:
[...]


Maar wat is er dan specifiek ANDERS in het script dat wel werkt dan in jouw script?!?! :?
daar gebruik ik geen array en object.

heb dat scripje van iemand even gedraait:

Parse error: parse error in /hdb1/shtml/secure/evert/evert2/check.php on line 3

oja, hebt me baas gevraagt of ie die zooi wou updaten (apache, mysql, php). dat word wachten tot na het weekend,

acm ik ga naar huis kijk thuis verder :) en dan rip ik alles uitelkaar

[ Voor 21% gewijzigd door Mister_X op 06-02-2003 17:00 ]


Acties:
  • 0 Henk 'm!

  • Vold
  • Registratie: September 2001
  • Laatst online: 22-01 23:04
Misschien dat ik het fout heb hoor, maar je verbind geeneens met je database !!!

<?php
$connect_1 = mysql_connect ("$hostname", "$username", "$password") or die (mysql_error());
mysql_select_db ($database,$connect_1);
$query = "SELECT item_id,title,date FROM items WHERE item_type = 'n' ORDER BY item_id DESC LIMIT 5";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
echo "<tr><td>$row['date']</td><td><a href=item.php?ItemID=$row['item_id']$row['title']</a></td></tr>";
}
?>

Zo moet ie werken...

[ Voor 17% gewijzigd door Vold op 06-02-2003 22:23 ]


Acties:
  • 0 Henk 'm!

  • Harm
  • Registratie: Mei 2002
  • Niet online
Mister_X schreef op 06 February 2003 @ 16:59:
[...]


daar gebruik ik geen array en object.

heb dat scripje van iemand even gedraait:

Parse error: parse error in /hdb1/shtml/secure/evert/evert2/check.php on line 3

oja, hebt me baas gevraagt of ie die zooi wou updaten (apache, mysql, php). dat word wachten tot na het weekend,

acm ik ga naar huis kijk thuis verder :) en dan rip ik alles uitelkaar
Als je nu ook nog eens die parse error krijgt in je check.php lijkt het er toch wel sterk op dat er wat mis is met je PHP installatie. Wacht een srustig af totdat het zootje geupdate is en probeer het dan nog eens. Want met het script is volgens mij niet echt iets mis. :)

@Vold: Het enige verschil wat ik zie tussen jouw post en die van TS is de resource identifier die jij gebruikt bij het selecten van de database. En die is optioneel en dus niet verplicht (PHP manual). Ik gebruik hem ook nooit en het werkt altijd prima. :)

Acties:
  • 0 Henk 'm!

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 15-07 09:34

PrinsEdje80

Holographic, not grated...

Misschien toch nog een leuke: zet eens
PHP:
1
error_reporting(E_ALL);

in je bestand en kijk dan of er vauten gemeld worden.

Used to be Down Under... Foto gallery


Acties:
  • 0 Henk 'm!

  • Vold
  • Registratie: September 2001
  • Laatst online: 22-01 23:04
ramH schreef op 06 February 2003 @ 22:56:
@Vold: Het enige verschil wat ik zie tussen jouw post en die van TS is de resource identifier die jij gebruikt bij het selecten van de database. En die is optioneel en dus niet verplicht (PHP manual). Ik gebruik hem ook nooit en het werkt altijd prima. :)
Wist ik niet, ben ik ook nog een beetje n00b :) Weer wat geleerd.
Pagina: 1