---
title: "mysql_num_rows gillas inte"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/122429-mysql-num-rows-gillas-inte"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Rickard"
published: "2005-02-14T21:57:01.000Z"
updated: "2005-02-16T19:40:47.000Z"
replies: 22
views: 555
page: 1
pages: 2
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/122429-mysql-num-rows-gillas-inte"
---

# mysql_num_rows gillas inte

_Sida 1 av 2._

## #1 — Rickard, 2005-02-14T21:57Z

Tjena!

Har ett litet problem här och hoppas på lite hjälp...
Försöker att räkna IP'n i en databas, meningen är att den skall lagra unika IP'n...
Finns ip't redan, så läggs det inte in någon info.
Finns inte ip't, så läggs det in...

Försöker med följande kod...

```
<?

$u_ip = $_SERVER['REMOTE_ADDR'];

$link = mysql_connect ("server","user","pass");
$databas = mysql_select_db("databas");
$in_use_query = mysql_query("SELECT unique FROM log WHERE ip = '$u_ip'", $link);
if(mysql_num_rows($in_use_query)) {
     error_message("IP redan räknat");
        exit;
}
$sql="INSERT INTO log (ip)
VALUES('$u_ip')";
mysql_query("$sql");
mysql_close ($link);
?>
```

Men jag får detta fel:

```
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/user/log/unique.php on line 7
```

Någon som kan hjälpa mig och förklara vad som är fel, och ev. en lösning på felet?
Vore tacksam för hjälp =)

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

## #2 — aasah, 2005-02-14T22:07Z

Det betyder att det är något fel på din SQL-sats. Eftersom det blir fel, skickas inget "resurs-handtag" tillbaka...

Lägg till en felutskrift:  

```php
$in_use_query = mysql_query("SELECT unique FROM log 
      WHERE ip = '$u_ip'", $link) or die(mysql_error());
```

**OBS slutet på raden!** Så får du ut ett detaljerat meddelande om vad det är MySQL inte gillar.

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

## #3 — Rickard, 2005-02-14T23:18Z

Tack...

Dock kan jag inte tyda problemet trots det...

```
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'unique FROM log WHERE ip = 'xxx.xxx.xxx.xxx' at line 1
```

Bara för att kolla mig själv nu..
Jag gissar på att felet ligger till vänster om "unique", men bara för att kolla så det inte är till höger...
Databasen heter 7324-1..
Tabellen heter unique och fältet som skall kollas heter "ip"..
där det står "log" var förvisso fel, det var tabellen ovan.
Jag har bytt ut log mot unique, ip och 7324-1 utan något bättre resultat, så det bör väl inte vara fel till höger om unique?

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

## #4 — Rickard, 2005-02-14T23:33Z

Ok...
Lyckades hitta problemet.. mysql_db_query skulle det tydligen vara...
Nu har jag dock ett annat problem som jag inte fattar mig på.. nu krafsar jag mig verkligen i skallen...

```
$in_use_query = mysql_db_query("SELECT ip FROM unique WHERE ip = '$u_ip'", $link) or die(mysql_error());
```

Nu får jag istället detta fel...

```
Incorrect database name 'SELECT ip FROM unique WHERE ip = 'xxx.xxx.xxx.xxx'
```

Som sagt, databasen = 7324-1, tabell = unique, fältet som skall kollas = ip
:q

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

## #5 — aasah, 2005-02-15T00:23Z

Läste visst inte själva SQL-strängen sist... Du har en tabell som heter unique???  :o Undra på att det blir problem! unique är ett reserverat ord i SQL, byt namn på tabellen! 

Exempel:
Anställd ((personnr), anställningsnr, namn, lön, ....) där både personnr och anställningsnr är unikt. För att beskriva för SQL att icke-nyckelvärdet anställningsnr är unikt så definieras den kolumnen till att vara unique. På samma sätt som man kan stoppa null-värden med NOT NULL o dyl.

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

## #6 — Rickard, 2005-02-15T08:55Z

ahh.. där ser man...
Döpte om unique till unik_ip men har dock samma problem hur jag än byter om i sql strängen...

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

## #7 — Rickard, 2005-02-15T08:59Z

Testade bara på skoj att ta byta tillbaks mysql_query från mysql_db_query, och nu funkade det...
Alltid lär man sig nåt nytt..  =)
Tack för hjälpen med allt det andra..  =)

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

## #8 — Rickard, 2005-02-15T12:55Z

Ytterligare en fråga då..  känns onödigt att öppna en ny tråd...
i tabellen "log" finns det ett fält som heter "referer" som fylls med "HTTP_REFERER".
Det är ju inte alltid man kommer in på sidan från en länk, så den är ju tom ibland.

går det, och i så fall hur, att sortera ut alla toma fält i qeryn, så att man vid visning av tabellen på en sida enbart ser de fält som är fyllda?

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

## #9 — aasah, 2005-02-15T14:12Z

> **Rickard skrev:**
>
> ... i tabellen "log" finns det ett fält som heter "referer" som fylls med "HTTP_REFERER".
> .... går det, och i så fall hur, att sortera ut alla toma fält i qeryn, så att man vid visning av tabellen på en sida enbart ser de fält som är fyllda?

Frågan är vad som lagras där när inget fylls i? Har den kolumnen något defaultvärde som "" (tom sträng) eller lagras där absolut inget? 

Testa att lägga in 
WHERE (referer \<\> "" AND referer \<\> NULL) i din SQL-fråga om du inte vet svaret på frågan ovan. Annars tar dessa två villkor bort för de respektive fallen.

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

## #10 — Rickard, 2005-02-15T15:32Z

Vist ska väl det ligga i SELECT satsen?
Jag får ett fel jag inte kan reda ut när jag lägger till det där...

```
$sql = "SELECT referer FROM log WHERE (referer <> "" AND referer <> NULL) ORDER BY id DESC LIMIT $start,$limit" or die(mysql_error());
```

Felet jag får är:

```
Parse error: parse error, unexpected '\"'
```

Jag kan då inte de en \\" någonstans på den raden...

red:
$start och $limit tillhör det pagingscript jag har inlaggt för att bryta upp till max 20 poster/sida.

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

## #11 — aasah, 2005-02-15T19:32Z

Förlåt mig! Jag tänkte mig inte för när jag skrev. Strängar i SQL avgränsas med ' inte ". Dessutom "or die" har du där strängen körs, inte i sql-frågan. Ändra till: 

```php
$sql = "SELECT referer FROM log 
            WHERE (referer <> '' AND referer <> NULL) 
            ORDER BY id DESC LIMIT $start,$limit";
$res = mysql_query($sql) or die(mysql_error());
```

> Felet jag får är:
>
>
> ```
> Parse error: parse error, unexpected '\"'
> ```
>
> 
> Jag kan då inte de en \\" någonstans på den raden...

Felet kommer från PHP, inte MySQL. Din fråga når aldrig längre än till att PHP hittar: 

```
"SELECT referer FROM log WHERE (referer <> "
```

 Aha! Strängslut. Nästa tecken ska då vara antingen ';' (slut på sats) eller '.' (konkatinera ihop med resten). Men nästa tecken är ett citationstecken, unexpected ". Och så escape:as det: \\" ==\> felmeddelandet.

Det blir mycket lättare att läsa din kod om du använder php-taggen: 

```php
Skriv PHP-kod här
```

 i stället för 

```
Annan kod
```

. Åstadkoms med (utan mellanslagen) \[ PHP\] \[ /PHP\] i stället för \[ KOD\]\[ /KOD\].

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

## #12 — Rickard, 2005-02-15T20:09Z

Tackar..  =)
Nu vart jag av med felen iaf, tyvärr så sopade den bort ALLT som står i referer, så den visar nada.. ;)

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

## #13 — aasah, 2005-02-15T20:30Z

Den sopar avgjort inte bort något. Ingenting ändras av en SELECT-sats. Om inget kommer ut betyder det antingen att innehållet inte ser ut som du tror, eller att frågan är fel.

Hur ser det ut utan WHERE-satsen då? Är du säker på att det ligger något i log?

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

## #14 — Rickard, 2005-02-15T20:34Z

jag menade förståss inte att det sopar bort ur databasen, utan snarare filtrerar bort allt...  =)
Jag skickar dig ett privat meddelande med länken till hela scriptet, så får du se vad som finns i databasen..  =)
Utan WHERE satsen visar den rubbet, både toma och fyllda fält...

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

## #15 — aasah, 2005-02-15T20:40Z

Vad får du ut om du skriver 

```php
$sql = "SELECT referer, id FROM log 
            WHERE (referer <> '' AND referer <> NULL) 
            ORDER BY id DESC LIMIT $start,$limit";
$res = mysql_query($sql) or die(mysql_error());
```

 Testa!

Förresten! Vad är värdena på $start, $limit? Vad skriver följande ut:

```php
$sql = "SELECT referer, id FROM log 
            WHERE (referer <> '' AND referer <> NULL)";
$res = mysql_query($sql) or die(mysql_error());
```

 Testa! Och svara.

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

## #16 — Rickard, 2005-02-15T20:45Z

Precis detsamma som tidigare...
Absolut ingenting...

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

## #17 — aasah, 2005-02-15T20:47Z

> **Rickard skrev:**
>
> Precis detsamma som tidigare...
> Absolut ingenting...

Även det nedre förslaget? Jag börjar misstänka att problemet kan vara ditt sorteringskriterium...

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

## #18 — Rickard, 2005-02-15T20:49Z

hmm...
Jag tar å pillar ihop en liten phps..  orkar du ta dig en fluktare då tro? =)

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

## #19 — K@llen, 2005-02-15T21:00Z

Skriv alltid ut din sql-fråga i felsökningssyfte om du skickar med variabler:

```
$sql = "SELECT referer, id FROM log 
WHERE (referer <> '' AND referer <> NULL)";
echo $sql;
//$res = mysql_query($sql) or die(mysql_error());
```

Sedan kan det mycket väl vara så att kolumnen referer innehåller blanksteg. Då uppfylls inte dina villkor.

```
$sql = "SELECT referer, id FROM log 
WHERE LENGTH(trim(referer)) > 0  AND referer IS NOT NULL";
$res = mysql_query($sql) or die(mysql_error());
```

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

## #20 — aasah, 2005-02-15T21:02Z

phps? :q Vet inte vad du menar riktigt. Men problemet ligger inte i PHP:n nu, utan i att få din SQL fråga att funka. Såvida inte... hur använder du svaret från queryn?

Det du vill ha ut ligger i $res\[0\] (om resurs-handtaget heter $res.)

Om mitt nedre förslag inte heller funkar och du skriver ut $res\[0\], pröva att skriva bara :

```php
$sql = "SELECT referer FROM log";
$res = mysql_query($sql) or die(mysql_error());
```

Då ska du få ut allt. 

Jag loggar ut och går och lägger mig nu, var uppe halva natten igår... Lycka till! :D

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

---

Tråden på webben: https://www.webforum.nu/amne/php/122429-mysql-num-rows-gillas-inte  
Nästa sida: https://www.webforum.nu/amne/php/122429-mysql-num-rows-gillas-inte/page2.md
