---
title: "SQL fråga med bara 1 rad som svar..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/160605-sql-fråga-med-bara-1-rad-som-svar"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "swede"
published: "2007-05-22T20:18:12.000Z"
updated: "2007-05-23T13:52:37.000Z"
replies: 6
views: 442
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/160605-sql-fråga-med-bara-1-rad-som-svar"
---

# SQL fråga med bara 1 rad som svar...

## #1 — swede, 2007-05-22T20:18Z

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:

```php
$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:

```php
<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?

//S

Permalänk: https://www.webforum.nu/p/160605

## #2 — K@llen, 2007-05-22T20:37Z

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"];
```

Permalänk: https://www.webforum.nu/p/1980060

## #3 — @nders, 2007-05-23T04:08Z

Du kan använda LIMIT för att begränsa antalet poster i resultatet.

Permalänk: https://www.webforum.nu/p/1980138

## #4 — swede, 2007-05-23T12:04Z

Om jag använder LIMIT 1, får jag då den första träffen ur tabellen?

Permalänk: https://www.webforum.nu/p/1980254

## #5 — Pedda, 2007-05-23T12:08Z

LIMIT 1 returnerar första träffen.

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

Permalänk: https://www.webforum.nu/p/1980256

## #6 — @nders, 2007-05-23T12:13Z

> 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.

Permalänk: https://www.webforum.nu/p/1980258

## #7 — aasah, 2007-05-23T13:52Z

Du kan ju också försäkra dig om att det faktiskt fanns en rad (minst) genom att skriva:

```php
if ($row = mysql_fetch_assoc($result)) { 
   $name = new name($row["name"]); 
}
```

Och om du vill kolla hur många rader du har i resultatet kan du använda mysql_num_rows($res);

Permalänk: https://www.webforum.nu/p/1980292

---

Tråden på webben: https://www.webforum.nu/amne/php/160605-sql-fråga-med-bara-1-rad-som-svar
