Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

mysql_fetch_array() expects parameter 1 to be resource, boolean given in

67 views
Skip to first unread message

Hans Lommeuld

unread,
May 21, 2012, 1:04:35 PM5/21/12
to
mysql_fetch_array() expects parameter 1 to be resource, boolean given
in

Denne warning kommer når jeg køre følgende script.

Hvor er fejlen eller bedre endnu hvordan kan jeg selv finde fejlen og
rette den.

Mine koder er som følgende:

<?php
$db = mysql_connect("localhost","XXXXX?","yyyyy?");
mysql_select_db("min_xxx_yyy_dk",$db);
// mysql_select_db("gbog",$db);
$sql = "SELECT * FROM `gbog` LIMIT 0, 30 ";

if ($_POST['skriv']){
$navn = $_POST['navn'];
$email = $_POST['email'];
$besked = $_POST['besked'];
if(!get_magic_quotes_gpc()){
$navn = addslashes($navn);
$email = addslashes($email);
$besked = addslashes($besked);
}
$dato_array = getdate();
$dato = $dato_array["mday"]."/".
$dato_array["mon"]."-".$dato_array["year"];
mysql_query("INSERT INTO gbog(navn, email,
dato,besked)VALUES('$navn','$email','$dato','$besked')");
}
?>
<form action="side2.php" method="POST">
<input type="hidden" name="skriv" value="1" />
<p>Navn:<input type="text" name="navn" /></p>
<p>Email:<input type="email" name="email" /></p>
<textarea cols="30" rows="5" name="besked"></
textarea><br />
<input type="submit" value="Send" />
</form>
<table>
<?php
$foresp = mysql_query("SELECT navn, email, dato,
besked FROM gbog ORDER BY nr DESC");
while($data = mysql_fetch_array($foresp)){
echo "<tr><td valign=\"top\">";
echo "fra:<a href=\"mailto:";
echo $data["email"];
echo "\">";
echo $data["navn"];
echo "</a>";
echo "<br />";
echo $data["dato"];
echo "</td><td valign=\"top\">";
echo nl2br($data['besked']);
echo "</td></tr>";

?>


Birger Sørensen

unread,
May 21, 2012, 1:36:18 PM5/21/12
to
Hans Lommeuld formulerede spørgsmålet:
Det er formentlig linien
$foresp = mysql_query("SELECT navn, email, dato, besked FROM gbog ORDER
BY nr DESC");
den er gal med, så $foresp er tom.
nr er defineret som integer og autoincrement i din tabel?

Du bør overveje seriøst at skifte til mysqli interfacet, og bruge
prepared statements i stedet. Det er væsentlig mere sikkert - og
ovenstående sikrer dig ikke mod injections.
Og du burde i øvrigt også overveje at bruge MySQL's format for datoer.
Det er væsentligt enklere at formattere datoer til/fra databasen, end
det er at skulle producere en speciel funktion for at sortere indlæg
efter dato, når du en dag får brug for det.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://skippersevent.dk


Karl Erik Christensen

unread,
May 21, 2012, 7:01:37 PM5/21/12
to
On 21-05-2012 19:36, Birger Sørensen wrote:
> Du bør overveje seriøst at skifte til mysqli interfacet, og bruge
> prepared statements i stedet. Det er væsentlig mere sikkert - og
> ovenstående sikrer dig ikke mod injections.

Det er 110% rigtigt Birger. Problemet er bare, at for os "selvlærte", er
faktisk alle de tutorials vi finder på nettet, bygget over den gamle
MySQL-API.
Og dokumentationen på f.eks.
http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

er skrevet i et snørklet "sprog", som forudsætter at kendskabet til
MySql, mindst er på universitets-niveau. Der er alt for mange
henvisninger til andre MySql funktioner.

En lidt lettere tilgang til emnet, findes på:
http://www.eksperten.dk/guide/1480

men her er kode-eksemplerne vist i så små bokse, at man skal sidde og
scrolle frem og tilbage, hvilket forringer i hvert fald mit udbytte af
gennemgangen.
Disse "tutorials" er bestemt ikke skrevet af folk der underviser.

Kender du nogle gode adresser der behandler emnet?

Karl Erik.

--
http://dmwebdesign.dk/karlerik/ - Ny hjemmeside
http://produceret-i.dk/ - Køb danske produkter

Birger Sørensen

unread,
May 22, 2012, 2:38:00 AM5/22/12
to
Karl Erik Christensen kom med følgende:
Jeg er helt enig i at der mangler en fornuftig dokumentation.
Den du linker til her, er ellers udemærket, omend ikke så omfangsrig -
og ja, kodeeksemplerne kunne være vist, så de også kunne læses.

Jeg bruger
http://dk.php.net/manual/en/book.mysqli.php
til at finde det jeg har brug for.

Hans Lommeuld

unread,
May 22, 2012, 1:04:20 PM5/22/12
to
On 22 Maj, 08:38, Birger Sørensen <s...@bbsorensen.com> wrote:
> Karl Erik Christensen kom med følgende:
>
>
>
>
>
>
>
>
>
> > On 21-05-2012 19:36, Birger Sørensen wrote:
> >> Du bør overveje seriøst at skifte til mysqli interfacet, og bruge
> >> prepared statements i stedet. Det er væsentlig mere sikkert - og
> >> ovenstående sikrer dig ikke mod injections.
>
> > Det er 110% rigtigt Birger. Problemet er bare, at for os "selvlærte", er
> > faktisk alle de tutorials vi finder på nettet, bygget over den gamle
> > MySQL-API.
> > Og dokumentationen på f.eks.
> >http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements...
>
> > er skrevet i et snørklet "sprog", som forudsætter at kendskabet til MySql,
> > mindst er på universitets-niveau. Der er alt for mange henvisninger til andre
> > MySql funktioner.
>
> > En lidt lettere tilgang til emnet, findes på:
> >http://www.eksperten.dk/guide/1480
>
> > men her er kode-eksemplerne vist i så små bokse, at man skal sidde og scrolle
> > frem og tilbage, hvilket forringer i hvert fald mit udbytte af gennemgangen.
> > Disse "tutorials" er bestemt ikke skrevet af folk der underviser.
>
> > Kender du nogle gode adresser der behandler emnet?
>
> > Karl Erik.
>
> Jeg er helt enig i at der mangler en fornuftig dokumentation.
> Den du linker til her, er ellers udemærket, omend ikke så omfangsrig -
> og ja, kodeeksemplerne kunne være vist, så de også kunne læses.
>
> Jeg brugerhttp://dk.php.net/manual/en/book.mysqli.php
> til at finde det jeg har brug for.
>
> Birger
>
> --http://varmeretter.dk- billig, sund og hurtig madhttp://skippersevent.dk

Jeg har fået løst problemet, det var en lille mangel i php-scriptet
som resulterede i fejlen.

Ang. Sql-injection. Det er så næste etappe jeg skal arbejdes med. Jeg
vender tilbage vis også det volder problemer.

Fin streng og tak for indlæg.

Hilsen

Claus
Alias "Hans Lommeuld"

Birger Sørensen

unread,
May 22, 2012, 3:42:59 PM5/22/12
to
Hans Lommeuld skrev den 5/22/2012:
8X
> Jeg har fået løst problemet, det var en lille mangel i php-scriptet
> som resulterede i fejlen.

Det ville måske kunne hjælpe andre, hvis du skriver *hvad* fejlen var.

> Ang. Sql-injection. Det er så næste etappe jeg skal arbejdes med. Jeg
> vender tilbage vis også det volder problemer.

Statisk hazard er ellers noget man skal gøre en kraftig indsats for at
forhindre, når man programmerer.
Men jeg håber da for dig, at du får gjort det, *før* der når at ske
nogen skade.
:-Z

> Fin streng og tak for indlæg.

Velbekomme. Vi prøver jo bare at hjælpe. B-)
0 new messages