---
title: "Fel i SQL-hämtning med LIMIT"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/106921-fel-i-sql-hämtning-med-limit"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "filipbh"
published: "2004-07-08T15:48:55.000Z"
updated: "2004-07-09T21:31:42.000Z"
replies: 10
views: 235
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/106921-fel-i-sql-hämtning-med-limit"
---

# Fel i SQL-hämtning med LIMIT

## #1 — filipbh, 2004-07-08T15:48Z

Använder nedanstående kod på min sida.. Den ska hämta alla bilder från en databas och skriva ut fem på varje rad. Problemet är att det tar jättelång tid att ladda sidan och det kommer upp: "Fatal eror: Maximum execution time of 30 seconds exeeded in /url/fil.php". Det kommer även massa tomma rader under... Vad är det för fel??

```php
echo "<table>";

$rows=$new_memb_pic+2;
$i=0;
while($i<$rows){
echo "<tr>";
$open = mysql_connect ("localhost", "","");
$sql = "SELECT * FROM tabell WHERE status=1 ORDER BY id ASC LIMIT ".$i." , 5";
$result = mysql_db_query("","$sql");

while($medlbilder=mysql_fetch_array($result)){
echo "<td><img src=\"/profiler/" . $medlbilder[personid] . "/bilder/" . $medlbilder[filnamn] . "\" width=150 height=100 border=0 alt=\"Klicka för att 

förstora\"><br>Uppladdad: " . date("ymd \k\l\. H:i", $medlbilder[uppladdad]). " av " . $medlbilder[person] . ".<br><a 

href=\"fil.php?visa=uppladdade&vad=uppladdad&svar=ja&vilken=".$medlbilder[id]."\">Godkänn</a>/<a 

href=\"fil.php?visa=uppladdade&vad=uppladdad&svar=nej&vilken=".$medlbilder[id]."\">Neka</a></td>";

$i = $i+1;
 }
}
echo "</table>";
```

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

## #2 — Matte, 2004-07-08T18:01Z

Du har en tom sträng som namn på din databas i mysql_db_query(). Ange databasnamn där.

Eller ännu hellre använda kombinationen mysql_select_db/mysql_query istället, för som det står i manualen om mysql_db_query:

> **manualen skrev:**
>
> This function has been deprecated since PHP 4.0.6. Do not use this function. Use mysql_select_db() and mysql_query() instead.

Det blir alltså:

```php
$open = mysql_connect ("localhost", "","");
mysql_select_db('databasnamn', $open);
$sql = "SELECT * FROM tabell WHERE status=1 ORDER BY id ASC LIMIT ".$i." , 5";
$result = mysql_query($sql);
```

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

## #3 — filipbh, 2004-07-08T18:43Z

Jag har databasnamn där.. Bara nu när jag la upp koden som jag tog bort det.

Ska iaf testa med ditt nya sätt...

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

## #4 — filipbh, 2004-07-08T18:59Z

Det tar fortfarande väldigt lång tid, felmeddelandet kommer fortfarande upp och sidan blir jättelång pga. tomma rader som skrivs ut. Jag har mer poster i gästboken och den hämtas med limit men är ändå lika snabb som sql-hämtningarna på alla de andra sidorna. Bara just den här hämtningen som är seg.

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

## #5 — Matte, 2004-07-09T05:56Z

Får jag fråga vad du tänkt ha detta till:

```php
while($i<$rows){
```

 
Det innebär att först hämtar du 0-4, nästa varv hämtar du 1-5, sedan 2-6 o.s.v.
För varje varv gör du dessutom en ny anslutning till MySQL.

Varför while-satsen överhuvudtaget ?

Beskriv vad du försöker göra.

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

## #6 — filipbh, 2004-07-09T18:55Z

$rows räknar hur många poster det finns i databasen.. Därför har jag ha en while-sats som ska köras så länge det finns poster. Kanske är onödigt... Vad vet jag. Sen ska den skriva ut fem poster på varje rad. Så finns det fler än fem poster skapas en ny rad och skriver ut fem till. $i = $+1 adderar ju 1 för varje post som skrivs ut. Så när den skrivit ut fem poster så är $i 4 och den börjar med post fem och skriver ut. Kanske är krångligt att läsa men du förstår nog...

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

## #7 — filipbh, 2004-07-09T18:56Z

Den skriver ut rätt. Problemet är ju som sagt att det tar lång tid och det kommer upp mycket tom plats under sista raden...

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

## #8 — Matte, 2004-07-09T19:24Z

Testa så här:

```php
echo "<table>";
echo "<tr>";

$open = mysql_connect ("localhost", "","");
$sql = "SELECT * FROM tabell WHERE status=1 ORDER BY id ASC";
$result = mysql_db_query("","$sql");

$i = 0;
while($medlbilder=mysql_fetch_array($result)){

   echo "<td><img src=\"/profiler/" . $medlbilder['personid'] . "/bilder/" . $medlbilder['filnamn'] . "\" width=150 height=100 border=0 alt=\"Klicka för att 

   förstora\"><br>Uppladdad: " . date("ymd kl. H:i", $medlbilder['uppladdad']). " av " . $medlbilder['person'] . ".<br><a 

   href=\"fil.php?visa=uppladdade&vad=uppladdad&svar=ja&vilken=".$medlbilder['id']."\">Godkänn</a>/<a 

   href=\"fil.php?visa=uppladdade&vad=uppladdad&svar=nej&vilken=".$medlbilder['id']."\">Neka</a></td>";

   $i++;
   
   if ($i % 5 == 0) {
      echo "</tr>\n<tr>\n";
   }
   
   
}

echo "</tr></table>";
```

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

## #9 — filipbh, 2004-07-09T19:37Z

$i=0 måste väl vara ovanför $open? Det visade fel när den var innan för... Den skriver ut fem bilder nu och det går fort.. Men jag har mer än fem poster i databasen så det ska skrivas ut en till rad men det görs inte.. Annars så fungerar det bra och snabbt...

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

## #10 — Matte, 2004-07-09T19:40Z

Jag glömde ta  bort LIMIT först. 
Du kanske hann se det innan jag redigerade?

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

## #11 — filipbh, 2004-07-09T21:31Z

Tackar Matte! Du löser alltid mina problem =)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/106921-fel-i-sql-hämtning-med-limit
