heey allemaal,

Kan iemand mij vertellen wat hier fout aan is?

<?php
$sql = "SELECT bericht,
aan
FROM ".$db_pb."
WHERE id = '".$_GET['bericht']."'";

$query = mysql_query($sql);

if(mysql_num_rows($query) > 0)
{
$inhoud = mysql_fetch_array($query);
?>

dit geeft:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
er zou een fout in je query moeten zitten, maar het enige dat ik (een beetje) fout vind aan je query is dat je quotes om een numerieke waarde hebt staan.

maar wat ik denk is dat de variabele $db_pb geen waarde heeft (of de $_GET variabele natuurlijk).
echo je query eens

(zet na die $sql = blablabla eens dit in je script dus: echo $sql; )

of zet achter mysql_query eens dit:
mysql_query or die(mysql_error())

stomme fout, die aan moest voor zijn ;-)
PHP Newbie, ik dacht dat we van jou zo onderhand wel mochten verwachten dat je een beetje kan debuggen. Als je een mysql fout krijgt weet je toch dat je met mysql_error kan zien wat er fout gaat, sowieso had die er al moeten staan dus :)
Tip: Zorg voor goede naamgevingen van de variabelen. Dat maakt het bouwen, onderhoud en het debuggen een heel stuk eenvoudiger.

In dit geval is $query fout, $query bevat namelijk geen query (SQL) maar een result-set. $result ligt dus voor de hand, je hoeft nooit te meer te raden wat daar nu in zal kunnen staan.

Verder nog wat aan beveiliging gaan doen, een $_GET (of andere user-input) mag nooit zonder enige controle in een query worden gezet, het is vragen om problemen met SQL-injection. Gebruik minimaal de functie mysql_real_escape_string().
ik kan uit die error niet halen dat ik een verkeerde kolomnaam op heb gegeven.

Dank voor de tip Frank, en die get-beveiliging is hierboven al gedaan ;-)

Reageren