---
title: "ny liten php-mysql fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/112144-ny-liten-php-mysql-fråga"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "walter groupius"
published: "2004-09-22T21:54:24.000Z"
updated: "2004-09-23T12:54:57.000Z"
replies: 7
views: 346
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/112144-ny-liten-php-mysql-fråga"
---

# ny liten php-mysql fråga

## #1 — walter groupius, 2004-09-22T21:54Z

varför funkar inte detta?

show_unike_hits_on_date($date);
function show_unike_hits_on_date($date){
$date2 = $date. "%";
$query = 'SELECT count( DISTINCT IP ) '
. ' FROM \`hms\` '
. ' WHERE \`time\` '
. ' LIKE "$date2"';
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$row = mysql_fetch_array($result, MYSQL_NUM);
$answer = $row\[0\];
echo $answer;
};

svaret som ekas blir 0 men om jag byter ut variabeln i sql satsen mot datumsträngen (hårdkodar den) så returneras rätt svar från mySQL..
Har testat att explicit casta datumet, men det gör ingen skillnad..

tacksam för svar

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

## #2 — lunne82, 2004-09-22T22:49Z

Prova skriva ut $query så ser du ju vad som skickas till databasen å så kan du fixa det som behövs. Har du rätt förmat på $date?

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

## #3 — kjell, 2004-09-23T05:49Z

```
. ' LIKE "$date2"'
```

 skickar förmodligen inget annat än just $date2 eftersom variabler inte körs mellan enkelfnuttar.

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

## #4 — aasah, 2004-09-23T12:10Z

Re: ny liten php-mysql fråga

Strängar i SQL står inom ' ' (enkelfnuttar) tabeller och kolumner ska inte ha några fnuttar. Så skriv frågan som:

```
$query = "SELECT count( DISTINCT IP )  FROM hms
                 WHERE time LIKE '$date2' ";
```

istället.

Du kan radbryta mitt i en sträng i PHP. PHP bryr sig inte, och det gör inte SQL heller...

Kjells påpekande är riktigt, men det fungerar utmärkt här om man skriver som jag gjorde. För inom en sträng avgränsad med " (dubbelfnuttar) är enkelfnutten vilket tecken som helst enligt PHP. Alltså kommer $date2 att evalueras eftersom den står inom dubbelfnuttar och inte enkel-diton (enligt PHP). Det som databasen tar emot, å andra sidan, är: 

SELECT count( DISTINCT IP )  FROM hms
                 WHERE time LIKE '$date2' 

Och då har datumet fått sin strängmarkering.

red: Förtydligande

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

## #5 — kjell, 2004-09-23T12:27Z

Det är riktigt. Ett litet förtydligande är att det inte fanns enkelfnuttar runt tabellnamn eller kolumner, utan hade skrivet precis som ditt exempel, fast tvärtom, alltså 

```
$query = 'SELECT count( DISTINCT IP )  FROM hms
                 WHERE time LIKE "$date2"';
```

 Av den anledningen parsas alltså inte variablen $date2 av PHP.

För att förenkla koden något så kunde man skippa 

```php
$query = 'SELECT count( DISTINCT IP ) '
. ' FROM `hms` '
. ' WHERE `time` '
. ' LIKE "$date2"';
$result = mysql_query($query) or die("Query failed : " . mysql_error());
```

 och skriva 

```php
$result = mysql_query("SELECT count( DISTINCT IP ) FROM hms WHERE time LIKE '$date2' ");
```

 istället.

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

## #6 — aasah, 2004-09-23T12:47Z

> **kjell skrev:**
>
> Det är riktigt. Ett litet förtydligande är att det inte fanns enkelfnuttar runt tabellnamn eller kolumner, ...

Nähä? :q Vad är det då för extra-fnuttar som finns runt namnen i det ursprungliga inlägget OCH ditt citat av detsamma? Någon sorts underlig fnutt är där i alla fall...

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

## #7 — @nders, 2004-09-23T12:52Z

> Vad är det då för extra-fnuttar som finns runt namnen i det ursprungliga inlägget OCH ditt citat av detsamma?

Det är s.k. "back-ticks", som man kan omge fältnamn med, exempelvis om man använder reserverade ord som tabell- eller fältnamn. (motsvaras i ex. Access av hakparenteser, \[\].)

Det är onödigt, imho, att använda back-ticks runt objektsnamn i SQL.

Mvh

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

## #8 — kjell, 2004-09-23T12:54Z

Det är s.k. back-ticks men dessa behövs inte i sammanhanget. Man använder back-ticks när man exempelvis har [reserverade ord](http://dev.mysql.com/doc/mysql/en/Reserved_words.html) som tabell- och kolumnnamn.

Det kanske ser ut som enkelfnuttar i inlägget beroende på vilken webbläsare, textstorlek m.m. som man använder.

\[r\]
Alltid någon som hinner posta innan man hinner skriva klart :)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/112144-ny-liten-php-mysql-fråga
