Du måste väl ta emot det du returnerar från funktionen också?
$mysqlresult = fn_dbquery($query);
Sedan loopar du igenom $mysqlresult.
6 svar · 496 visningar · startad av nighteye
Håller på att trixa ihop en funktion som jag kan använda när som helst när jag väl köra en query mot SQL-databasen utan att behöva skriva en massa tabellnamn och databasuppgifter. Problemet är att jag inte får någon data returnerad, fattar inte heller varför. Nån som ser nåt fel?
Ligger en require längst upp som hämtar inloggningsuppgifter, databas och tabell från MySQL databasen.
Så här ser funktionen ut som jag kör queryn emot.
function fn_dbquery($query)
{
$dbresult = mysql_query($query) or die(mysql_error());
if (!$dbresult)
{
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
else
{
return mysql_fetch_array($dbresult);
}
mysql_free_result($dbresult);
}
Och så kör vi queryn här för att hämta resultatet:
$query = "SELECT * FROM categories WHERE apa LIKE '%.0'";
fn_dbquery($query);
while ($row = @mysql_fetch_array($dbresult))
{
echo "<option>$row[category_name]</option>\n";
}
Men jag får ingen data, blir bara tomt. Varför?
Du måste väl ta emot det du returnerar från funktionen också?
$mysqlresult = fn_dbquery($query);
Sedan loopar du igenom $mysqlresult.
Det fungerar nu, tack för tipset!
Var även tvungen att ändra så att jag bara returnerar variablen och inte hela arrayn i funktionen.
return $dbresult;
Tänk på att mysql_free_result() aldrig kommer att köras eftersom if satsen antingen kör en die() eller en return().
Hur ska jag göra för att den ska rensa resultatet då i funktionen direkt?
mysql_free_result() tar bort resultatet av din fråga vilket gör att du inte kommer åt resultatet längre.
Då kan du inte köra den i din funktion eftersom att du efter att du anropat funktionen använder resultatet av frågan, tar du då bort resultatet i frågan så får du inget resultat att använda.
Du måste göra något liknande:
$query = "SELECT * FROM categories WHERE apa LIKE '%.0'";
$dbresult=fn_dbquery($query);
while ($row = @mysql_fetch_array($dbresult))
{
echo "<option>$row[category_name]</option>\n";
}
mysql_free_result($dbresult);
Ja precis som jag trodde. Ville haft det i funktionen så man slipper skriva det varje gång.