Avatar billede loha Nybegynder
23. maj 2004 - 20:13 Der er 26 kommentarer og
2 løsninger

Hvad er galt? Fejl i linie 37

Jeg har lige oprettet et lille eksempel fra et af de små hæfter. Eksemplet er en gæstebog, men jeg får en fejl.

Her er scriptet:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Gæstebog</title>
</head>

<body>
<form name="form1" method="get" action="opdater.php">

Læg venligst en besked:
<br>
Navn:
<input type="text" name="navn">
<br>
Email:
<input type="text" name="email">
<br>
<textarea name="besked" rows="8"></textarea>
<input type="submit" name="Submit" value="Indsend">

</form>

<hr>

Tak til de personer, som allerede har lagt en besked!

<?php

$db = mysql_connect("hummer", "", "");

mysql_select_db("gaestebog",$db);


$result = mysql_query("SELECT * FROM indlaeg",$db);

while ($myrow = mysql_fetch_row ($result)){

?>

Navn: <?php echo $myrow[1] ?>
<br>
Email: <?php echo $myrow[2] ?>
<br>
Besked: <?php echo $myrow[3] ?>
<br>

<hr>

<?
}
?>


</body>
</html>


Og her er fejlbeskrivelsen:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\Apache2\htdocs\gaestebog\laes.php on line 37

Her er min linie 37:

while ($myrow = mysql_fetch_row ($result)){

Jeg har prøvet alt muligt, men jeg bliver ved med at få denne fejl. Jeg bruger de nyeste stabile versioner af php, MyphpMyAdmin, MySQL og med Apache Webserver på en xp pro.

Håber der er en, der kan hjælpe
Avatar billede phliplip Nybegynder
23. maj 2004 - 20:17 #1
Kunne det være fordi der ikke er nogen indlaeg !? Det plejer den nemli' gerne at brokke sig over ;)

Brug
if(mysql_num_rows($result) > 0) {
  while ($myrow = mysql_fetch_row ($result)){

Så kommer du ikke galt af sted ;)

Men ellers så prøv at skrive:
$result = mysql_query("SELECT * FROM indlaeg",$db) or die(mysql_error());

Og så post lige den evt. fejl !
Avatar billede dennismp Nybegynder
23. maj 2004 - 20:17 #2
der er noget galt med din sql.

prøv at skrive:
$result = mysql_query("SELECT * FROM indlaeg",$db) or die(mysql_error());
istedet for:
$result = mysql_query("SELECT * FROM indlaeg",$db);

.. hvad siger den nu?
Avatar billede dennismp Nybegynder
23. maj 2004 - 20:18 #3
philiplip: man får ikke fejl hvis man får 0 rækker tilbage. Så bliver whilen bare "udført" 0 gange..
Avatar billede phliplip Nybegynder
23. maj 2004 - 20:18 #4
Smartass ;)
Avatar billede dennismp Nybegynder
23. maj 2004 - 20:21 #5
Well, når du er 17 sekunder hurtigere end mig, så må jeg jo kritisere mig, så jeg fremstår bedre :-).

Nej, faktisk er der en del der tror at man får en fejl, hvis mysql ikke kan finde nogle rækker.
Avatar billede loha Nybegynder
23. maj 2004 - 20:24 #6
Der er oprettet 2 små indlæg.
Avatar billede phliplip Nybegynder
23. maj 2004 - 20:28 #7
dennismp: Det er i orden.. det er bare mig der tåger lidt på denne højthellige søndag !-)

loha: Hvad giver den som fejl !?
Avatar billede phliplip Nybegynder
23. maj 2004 - 20:29 #8
dennismp: Kan godt li' at du siger at du må kritisere dig selv ;)
Avatar billede loha Nybegynder
23. maj 2004 - 20:34 #9
Har prøvet med: $result = mysql_query("SELECT * FROM indlaeg",$db) or die(mysql_error());

Og får følgende fejl: No Database Selected
Avatar billede phliplip Nybegynder
23. maj 2004 - 20:40 #10
;)
Avatar billede phliplip Nybegynder
23. maj 2004 - 20:42 #11
Prøv:
$db = mysql_connect("hummer", "", "") or die(mysql_error());
mysql_select_db("gaestebog",$db) or die(mysql_error());

I stedet for:
$db = mysql_connect("hummer", "", "");
mysql_select_db("gaestebog",$db);
Avatar billede loha Nybegynder
23. maj 2004 - 20:45 #12
Giver følgende fejl: Access denied for user: '@%' to database 'gaestebog'
Avatar billede dennismp Nybegynder
23. maj 2004 - 21:01 #13
phliplip: Det var sgu da en uheldig typo. Jeg må vist overlade dette til de professionelle :)
Avatar billede loha Nybegynder
23. maj 2004 - 21:05 #14
Synes jeg også. Jeg er nok bare ved at være træt, jeg står jo op kl. 04:00 til hverdag og jeg har siddet med dette siden i morges. har endda afprøvet med det eksempel, der er downloadet fra forlaget, men lige fedt.
Avatar billede loha Nybegynder
23. maj 2004 - 21:06 #15
Nu virker det slet ikke, så jeg holder en velfortjent pause.
Avatar billede phliplip Nybegynder
23. maj 2004 - 21:28 #16
dennismp: he he

loha: Ja gør du det ;) Så kigger jeg lidt fjernsyn i mellemtiden.
Avatar billede loha Nybegynder
23. maj 2004 - 21:30 #17
God fornøjelse, jeg er så heldig, at jeg ikke har noget.
Avatar billede muddi Praktikant
24. maj 2004 - 12:45 #18
Jeg ved ikke om det kan være fejlen, men du har et mellemrum mellem funktionens navn og funktionsparametrene. Det er mig bekendt kun for "conditions" det er tilladt.

Prøv at erstatte

while ($myrow = mysql_fetch_row ($result)){

med

while ($myrow = mysql_fetch_row($result)){
Avatar billede muddi Praktikant
24. maj 2004 - 12:59 #19
Glem hvad jeg skrev... det virker selv om der er mellemrum!
Avatar billede muddi Praktikant
24. maj 2004 - 15:20 #20
Du har ikke angivet hverken brugernavn eller password til din database. Det er derfor du ikke modtager nogen gyldig resource!

<?php
// Du har ikke angivet noget brugernavn og password her!!!
$db = mysql_connect("hummer", "BRUGERNAVN", "PASSWORD")
    or die("MySQL Error " . mysql_errno() . ": " . mysql_error());

mysql_select_db("gaestebog",$db)
    or die("MySQL Error " . mysql_errno() . ": " . mysql_error());

$result = mysql_query("SELECT * FROM indlaeg", $db)
    or die("MySQL Error " . mysql_errno() . ": " . mysql_error());

while ($myrow = mysql_fetch_row($result)){

?>

Navn: <?php echo $myrow[1] ?>
<br>
Email: <?php echo $myrow[2] ?>
<br>
Besked: <?php echo $myrow[3] ?>
<br>

<hr>

<?
}
?>
Avatar billede muddi Praktikant
24. maj 2004 - 15:23 #21
Fejlen du beskriver længere oppe

Access denied for user: '@%' to database 'gaestebog'

Betyder at du ikke har adgang til tabellen 'gaestebog' som bruger '' der logger på fra '%' (alle steder fra).

Du er altså nødt til at angive et gyldigt brugernavn og password for at undgå den fejl.
Avatar billede loha Nybegynder
24. maj 2004 - 15:59 #22
Har prøvet at sætte brugernavn og password ind, men så går den da først helt grasat.
Jeg tror jeg starter helt forfra på acriptet.
P.S. Har det nogen betydning,at det er PHP4????
Avatar billede muddi Praktikant
24. maj 2004 - 19:54 #23
Hvorfor går det helt grasat, når du prøver at indsætte brugernavn og password?
Er du sikker på at det er det rigtige brugernavn og password? Tager du forbehold for store og små bogstaver i brugernavn/password?

Det har ikke nogen betydning at det er PHP4. Det kunne muligvis have en betydning, hvis det var php5, for der er mysql lib ikke længere med i kernen. Men i så fald ville du få helt andre fejl meddelelser, såsom "call to undefined function"
Avatar billede loha Nybegynder
24. maj 2004 - 20:42 #24
Ja, jeg tager forbehold for store og små bogstaver. Til denne test bruger jeg kun små bogstaver, men i dette tilfælde er der ikke noget brugernavn og password.
Avatar billede loha Nybegynder
24. maj 2004 - 20:44 #25
Øh! tænkte på om det kunne være fordi jeg kun har lavet scriptet laes.php og ikke opdater.php endnu??? Men det burde da virke alligevel, jeg er kun ude på at se de 2 små indlæg, jeg har oprettet med phpMyAdmin.
Avatar billede loha Nybegynder
24. maj 2004 - 20:50 #26
Undskyld! Jeg har taget et udtræk fra phpMyAdmin, så man kan se, at der er oprettet et par indlæg. Det har ellers været foreslået om der overhovedet var oprette indlæg.

Her kommer udtrækket:

SQL resultat
Vært: hummer
Database: : gaestebog
Genereringstidspunkt: 24/05 2004 kl. 20:46:51
Genereret af: phpMyAdmin 2.5.6 / MySQL 4.0.18-nt
SQL-forespørgsel: SELECT * FROM `indlaeg` WHERE 1 LIMIT 0, 30;
Rækker: 2

id  navn  email  besked 
1 loha email.dk Virker det?????
2 loha email.dk Det ser ud til at virke.......
Avatar billede muddi Praktikant
25. maj 2004 - 09:00 #27
Jeg forstår ikke hvorfor du ikke har noget brugernavn og password. Du skal som minimum have et brugernavn for at kunne bruge en database.

Når du åbner phpMyAdmin, så står der en tekst i toppen. F.eks.
"MySQL 4.0.18 kører på kirsten.andersenit.dk som admin@sabine.andersenit.dk"

her er brugernavn 'admin', som har tilladelse til at logge på fra 'sabine.andersenit.dk'.

Hvis du har tænkt dig at starte forfra på dit script, så kunne du måske være interesseret i denne artikel http://www.webcafe.dk/artikler/php/phpmysqlgaestebog/
Avatar billede loha Nybegynder
25. maj 2004 - 09:45 #28
Tak for tippet, har udskrevet artiklen og så skal jeg igang, når jeg kommer hjem, er på skole nu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester