Går det inte att få något vettigare felmeddelande från MySQL med mysql_error() när du ställer SQL-frågan?
Heter verkligen fältet i tabellen fält?
12 svar · 344 visningar · startad av mr.mainline
Jag har denna kod för att söka igenom ett forum som ligger i sparat i MySql(har så man ska kunna fylla i ett sök ord för att söka ett inlägg.)
<?
$con = mysql_connect("localhost","xxxxxx","xxxxxx")
or die("Error connecting to db<br>".mysql_error());
$db = mysql_select_db("xxxxxx")
or die("Error selecting db<br>".mysql_error());
if(isset($_GET['sokresultat'])) {
$nyckelord = addslashes($_GET['nyckelord']);
$qsok = mysql_query("select * from forum where fält like '%$nyckelord%' order by id desc");
$antal = mysql_num_rows($qsok);
echo "Nyckelord: $nyckelord<br />\n";
echo "Antal: $antal<br /><br />\n";
while($ssok = mysql_fetch_array($qsok)) {
//Skriv ut information
echo $row['datum']."<br>";
echo nl2br($row['inlagg'] )."<br>";
echo "<b>".$row['namn']."</b>" ." - ".$row['email'] ;
echo "<hr>";
} }
?>
men får detta fel mess:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /customers/freddeholm.com/freddeholm.com/httpd.www/sok.php on line 38
Nyckelord:
Antal:
"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/freddeholm.com/freddeholm.com/httpd.www/sok.php on line 43"
Vad är fel??
Går det inte att få något vettigare felmeddelande från MySQL med mysql_error() när du ställer SQL-frågan?
Heter verkligen fältet i tabellen fält?
Nej fältet heter inte "fält" ,utan (inlagg) så det var därför jag fick meddelandet, så nu får jag inget fel meddelande, men heller ingen utskrift av texten i fältet (inlagg).
Ändra raden
while($ssok = mysql_fetch_array($qsok)) {
till
while($row = mysql_fetch_array($qsok)) {
Nu skiver den ut alla inlägg som finns i "forum".
Då tyder det på att $nyckelord är tom.
ok,hur fixar jag till det då,med funktionen empty eller?
ja jag provade att skiva in ett nyckelord i formuläret.
Och hur ser formuläret ut?
så här ser koden ut nu:
<?
$con = mysql_connect("localhost","xxxxxx","xxxxxx")
or die("Error connecting to db<br>".mysql_error());
$db = mysql_select_db("xxxxxx")
or die("Error selecting db<br>".mysql_error());
if(isset($_GET['sokresultat'])) {
$nyckelord = addslashes($_GET['nyckelord']);
$qsok = mysql_query("select * from forum where inlagg like '%$nyckelord%' order by id desc");
$antal = mysql_num_rows($qsok);
echo "Nyckelord: $nyckelord<br />\n";
echo "Antal: $antal<br /><br />\n";
while($row = mysql_fetch_array($qsok)) {
//Skriv ut information
echo $row['datum']."<br>";
echo nl2br($row['inlagg'] )."<br>";
echo "<b>".$row['namn']."</b>" ." - ".$row['email'] ;
echo "<hr>";
} }
?>
formuläret ser ut så här:
<form action='sok.php?sokresultat' method='post'>
<input type='text' name='nyckelord' />
<input type='submit' value='Sök' />
</form>
Eftersom du använder metoden POST i formuläret, blir variabeln $nyckelord tom när du använder $_GET för att hämta in värdet. Använd $_POST istället.
Tusen tack nu funkade det utmärkt.