webForumDet fria alternativet

Vill endast visa kommentarer som har 0

PHP

8 svar · 632 visningar · startad av Emil W

Medlem sedan mars 2009512 inlägg
Frågan#1

Hej

Jag har försökt att få att han ska bara visa dom kommentarer som har

0 i fältet privat.

Har försök göra så här

men funkar ej.

$resultt = mysql_query("SELECT kommentarid,namn,datum,kommentar,id,privat FROM ********** SET privat='0'  WHERE kommentarid='{$_GET['id']}' ORDER BY datum DESC");

Jag får detta felmeddelande.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\visablogginlagg.php on line 92

Medlem sedan nov. 2000146 inlägg
#2

Koden skall vara

$resultt = mysql_query("SELECT kommentarid,namn,datum,kommentar,id,privat FROM ********** WHERE kommentarid='{$_GET['id']}' AND privat='0' ORDER BY datum DESC");

Du försöker sätta private till 0 typ som update.

Medlem sedan feb. 200377 inlägg
#3

Prova med detta:

SET används bara vid UPDATE....

$resultt = mysql_query("
SELECT
kommentarid,
namn,
datum,
kommentar,
id,
privat
FROM **********
WHERE
kommentarid='{$_GET['id']}'
AND privat='0'
ORDER BY datum DESC");

Medlem sedan mars 2009512 inlägg
#4

Tack för hjälpen AndersN nu funkar allt perfekt :)

Medlem sedan mars 2009512 inlägg
#5

och sen på dom som har 1 vill jag skriva på sidan

så att det står så här på som inlägg som har värde 1

Denna kommentar är endast till för Emil Wiklund

Medlem sedan juni 20006 031 inlägg
#6

Då får du ta bort:
AND privat='0'
från din sql fråga och göra en if-sats istället när du loopar ut.

if ($row['privat'] == 0)
{
     echo 'Denna kommentar är endast till för Emil Wiklund';
}
else
{
     echo $row['kommentar'];
}
Medlem sedan mars 2009512 inlägg
#7

Tack pedda, allt funkar nu perfekt :D

Jag bytte bara ut 0 till 1 istället

så blev det så som jag ville ha

Medlem sedan juni 20014 421 inlägg
#8

Din kod är farlig Emil W. Du har tidigare blivit tipsad om hur man undviker sql-injections, men du verkar ha glömt det när du skrev den här SQL-satsen. Den farliga delen i din kod är när du hämtar in ett id direkt från din $_GET-variablel: kommentarid='{$_GET['id']}'
Om du kör med den koden som du har i dagsläget kommer till exempel vem som helst att kunna läsa vilka meddelande som helst, detta då man kan skicka in godtycklig sql via id-parametern i URL:en. Det går dock att göra mycket värre saker än att läsa andras meddelanden (hämta ut användares lösenord, läsa hemliga filer på hårddisken och liknande).

Följande länkar förklarar problemet och lösningen mer ingående:

Medlem sedan mars 2009512 inlägg
#9

Ja gjorde nu så här

$resultt = mysql_query("SELECT kommentarid,namn,datum,kommentar,id,privat FROM tabell kommentarid="'.mysql_real_escape_string($_GET['id']).'"');
245 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
118 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)