webForumDet fria alternativet

Hur tar jag emot ifrån Count(*)?

12 svar · 395 visningar · startad av Sjodahl

SjodahlMedlem sedan maj 20033 218 inlägg
#1

Hej!

Skall räkna antalet poster det finns med ett visst IPnr.
Tror jag ställer frågan rätt, men vet inte riktigt hur jag maskar fram svaret i RES variablen. (använder php med)

$SQL = "select comment, count(*) from guestbok where comment = '$IPADRESS'";
$RES = mysql_query($SQL);

Detta går ju typ att använda när jag skall ha ut vanliga saker ut databasen.

$rad=mysql_fetch_array($RES)
echo ($rad['comment']);
@ndersMedlem sedan juni 200032 969 inlägg
#2

Till att börja med; ange ett alias i SQL-frågan så kan du använda det som fältnamn i utskriften.

$SQL = "select comment, count(*) [b]AS antal[/b] from guestbok where comment = '$IPADRESS' ";
SjodahlMedlem sedan maj 20033 218 inlägg
#3

Okej verkar vettigt!

Så här blir det:

$SQL = "select comment, count(*) AS antal from guestbok where comment = '$IPADRESS' ";
$RES = mysql_query($SQL); 

$rad=mysql_fetch_array($RES);
echo ($rad['antal']);

Men får följande felmeddelande:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in index.php on line 27
@ndersMedlem sedan juni 200032 969 inlägg
#4

Du borde låta PHP-scriptet skriva ut felmeddelande från MySQL istället för det där standardfelet. Dock behöver du inte hämta ut comment, eftersom du använder det som villkor, så du vet ju redan fältets värde.

$SQL = "select count(*) AS antal from guestbok where comment = '$IPADRESS' ";

Mvh

SjodahlMedlem sedan maj 20033 218 inlägg
#5

Hej inte helt med på hur jag gör det.

Men antar jag skall använda:

mysql_error()
@ndersMedlem sedan juni 200032 969 inlägg
#6

Tja, jag kan ingenting om PHP, men...

$RES = mysql_query($SQL) or  die (mysql_error ());
SjodahlMedlem sedan maj 20033 218 inlägg
#7

Hade visst kommit med ett "," i sql frågan.

Kan passa på och fråga en liten annan sak med, du verkar ju ha stenkoll på SQL-satser. Det gäller dubbel och enkel fnuttar. Spelar det någon roll vilket man använder igentligen?

Något bra tips för att undvika SQL-Injection?

@ndersMedlem sedan juni 200032 969 inlägg
#8

I SQL använder man alltid apostrofer som strängliteraler, så ja, det spelar roll.

I PHP finns funktioner för att escape:a värden för SQL-frågor, exempelvis addslashes().

LarsGMedlem sedan dec. 200012 464 inlägg
#9

addslashes fungerar inte för alla DBMS. Använd standard SQL istället. Dvs, byt ut ' mot '' innan anrop.

@ndersMedlem sedan juni 200032 969 inlägg
#10

Jag tolkar MySQL-manualen som att man måste använda \ som escapetecken för strängar. Jag vill också minnas att jag vid någon test för länge sedan fått felmeddelande då jag escapeat ' till ''.

Stimmt oder nicht?

SjodahlMedlem sedan maj 20033 218 inlägg
#11

men tex som denna måste jag väl skriva den på detta sättet?

	$SQL = "select count(*) AS antal from iplogger where ipadress = '$IPADRESS'";

går väl inte att ha dubbelfnuttar där inne.

@ndersMedlem sedan juni 200032 969 inlägg
#12

Du kan ha citationstecken inne i strängar, men ska du skriva citationstecken direkt i strängar i PHP (om du använder citationstecken som strängliteraler) så måste du escapea dessa. Det har dock inget med SQL att göra.

LarsGMedlem sedan dec. 200012 464 inlägg
#13

Det går att använda ' som escapetecken även i MYSQL.

132 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)