Hur skriver jag snyggast om min sql fråga bara ska (bör) resultera i en rad?
Normalt skriver jag något liknande såhär:
$query = "SELECT name FROM adressesad WHERE id =" . $id;
$result = mysql_query($query, $link) or Die ('Could not select : ' . mysql_error());
while ($row = mysql_fetch_assoc($result)) {
$name = new name($row["name"]);
$names[] = $name;
}
mysql_free_result($result);
return $names
Vilket kommer att returnera en array med namn objekt.
Men hur skriver jag om min SQL bara ska / kan / bör returnera 1 rad?
En lösning är att låta while satsen vara kvar och bara plocka ut det sista
resultatet typ så här:
<snip>
while ($row = mysql_fetch_assoc($result)) {
$name = new name($row["name"]);
}
</snip>
return $name;
Är det så jag bör göra eller finns det något bättre sätt?
Om id är unikt får du ju bara en träff på din fråga och då kan du skriva:
$query = "SELECT name FROM adressesad WHERE id =" . $id
$result = mysql_query($query, $link) or Die ('Could not select : ' . mysql_error());
$row = mysql_fetch_array($result);
$name = $row["name"];
Finns det flera id som kan vara samma verkligen?
Om id är unikt så kan du strunta i LIMIT och din while sats och använda mysql_fetch_assoc istället för mysql_fetch_array
Om jag använder LIMIT 1, får jag då den första träffen ur tabellen?
Inte nödvändigtvis. Det beror på vad du använder för sortering / ORDER BY. Man kan aldrig vara säker på i vilken ordning en databas returnerar poster om man inte använder order by.