Hjælp til fejlfinding på "mysql_fetch_array()"

Tags:    php

Hej forum

Jeg har et sikkert banalt problem, men jeg er også helt ny i PHP.

jeg får følgende fejlmelding:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Egne\Ny mappe\php-og-mysql-eksempler\blog\rediger.php on line 16

Scriptet er følgende:
<?php include("database.php"); ?>
<?php include("header.php"); ?>
<?php include("adgangskontrol.php"); ?>

<h1>Rediger</h1>
<p>Vælg hvilket indlæg, du vil redigere.</p>
<p>
<?php
$bruger = $_SESSION["brugernavn"];

//$sql = "SELECT id, bruger, overskrift FROM indlaeg ORDER BY id DESC";
$sql = "SELECT id, bruger, overskrift FROM indlaeg WHERE bruger = " .$bruger. ";";

$resultat = mysql_query ($sql);

while ($post = mysql_fetch_array($resultat)) {

echo $post["bruger"];
echo '</a> ';
echo '<a href="opret.php?id=' . $post["id"] . '">';
echo $post["overskrift"];
echo '</a> ';
echo '<a href="slet-indlaeg.php?id=' . $post["id"] . '">Slet</a>';
echo '<br/><br/>';
}

?>
</p>

<?php include("footer.php"); ?>



Scriptet virker fint med den førstnævnte $SQL sætning. Den er dog sat ud af spillet med //.
Den returnere alle indlæg fra en database.

Den anden $SQL virker ikke, hvilket i den grad er irriterende. Jeg har kørt den som SQL på adminPHP og der virker den fint. Meningen er at den udelukkende skal returnere indlæg med den pågældende bruger som navngives $bruger via $_SESSION.

Men jeg forstår ikke den fejlmelding der kommer

Er der nogen der kan gennemskue hvorfor og evt. en løsning er jeg meget taknemlig.




Indlæg senest redigeret d. 26.03.2010 13:00 af Bruger #15789
5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
fordi du har glemt gnyffer i nr.2 sql:

$sql = "SELECT id, bruger, overskrift FROM indlaeg WHERE bruger = '" .$bruger. "';";



Fejlen får du fordi at dit kald til mysql_query() returnerer false (en boolsk værdi) i stedet for en ressource, hvilket den gør pga. en fejl i din forespørgsel. Til at starte med ville jeg nok rette == til = i din SQL og se om det hjælper. Du behøver heller ikke at afslutte SQL delen med et ;

Mvh.

Kasper (TSW)



Tak for inputet.
Jeg har nu rettet "==" men det ændre ikke noget. Fejlmeldingen er den samme.

Men hvorfor virker den første //$sql linje efter hensigten (når den er aktiveret), og så virker den anden aktive $sql ikke? Begge returnere vel samme værdier eller hvad???

Eller er der noget grundliggende galt i opstillingen?

Morten



Hej Michael

Skarpt indlæg du lige faldt ind Micahel. Nu virker det som det var tænkt!!! Perfekt :D

Er dog lidt rundforvirret over hvornår man bruger " eller/og ' i SQL. Har du nogle gode råd til hvordan man styrer det eller er det bare elemetær SQL :-)

Det mærkelig er at denne sql forespørgelse virker fint og der er ikke brugt gnyffer!
$sql = "SELECT bruger, overskrift, indhold FROM indlaeg WHERE id = " . $id . ";";

Det er da ikke mærkeligt at man som ny i dette bliver bare lidt forvirret.




Hej Morten,

Hvis du skal matche noget der ikke er tal, fx tekst, bør du bruge quotes. Tal kan matches uden quotes.

Mvh.

Kasper (TSW)



t