Kezdőoldal » Számítástechnika » Weblapkészítés » Egy mysql lekérdezésnél miért...

Egy mysql lekérdezésnél miért jó az, ha {} közé kerül egy érték?

Figyelt kérdés
Tehát arra gondolok, hogy miért jobb ez SELECT * FROM `posts` WHERE id={$id}, mint ez SELECT * FROM `posts` WHERE id=$id.

2015. okt. 27. 23:28
 1/8 anonim ***** válasza:
100%
feltételezem az sql injection esetén talán egy fokkal nehezebb volt helyes kódot beírni. gyakorlatban egyébként prepared statement-t használj és megszűnnek az ilyen gondjaid :)
2015. okt. 27. 23:34
Hasznos számodra ez a válasz?
 2/8 2xSü ***** válasza:
100%

Inkább csak átláthatóbb. Ugye PHP-ban kapcsos zárójelben több lehetőséged van. Pl. ha van egy $v változód, ami mondjuk feszültséget jelent és az értéke 5, és ki szeretnéd írni, hogy 5V-os, akkor kapcsos zárójel nélkül valahogy így néz ki: $x . "V-os". Ha úgy írnád, hogy "$xV-os", akkor a $xV nem létező változót keresné az értelmező. Kapcsos zárójellel könnyebb az élet: "{$x}V-os". Vagy a "$tabla_mezo" is a $tabla_mezo változót helyettesítené be, a "{$tabla}_mezo" meg csak a $tabla változó értékét, hozzáfűzve a „_mezo” szöveget.


További előnyei is vannak:

"Érték: {$myarray[0]['val']}"

"Tulajdonság: {$obj->property}"


A kérdésben szereplő példánál nincs semmiféle előnye, maximum annyi, hogy jobban látható, hogy hol van az SQL szövegében változó. A $id ugyanúgy jó, mint a {$id}, ugyanazt az SQL szöveget fogja jelenteni, teljesen ekvivalens egymással a kettő.

2015. okt. 28. 01:36
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:

SQL szempontjából semmit, ez PHP...

SQL -t nézve inkább: SELECT * FROM `posts` WHERE id='$id'

Persze ez se ér semmit ha $id nincs ellenőrizve, escape -elve.

[link]

2015. okt. 28. 07:57
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
Volt pár percem: [link]
2015. okt. 28. 09:26
Hasznos számodra ez a válasz?
 5/8 2xSü ***** válasza:

> SQL -t nézve inkább: SELECT * FROM `posts` WHERE id='$id'


Egyrészt valószínű, hogy az id egy szám, akkor nem szükséges idézőjelek közé zárni, sőt ez egy hangyányit növeli is a feldolgozás idejét, de valóban mérhetetlenül kis mértékben, max. néhány órajelciklussal. (Mivel két karakterrel hosszabb szöveget kell parse-olnia.)


Bár lehet előnye is annak – noha nem szükséges – ha a számokat is idézőjelek közé zárod, pl. ha egy szám jellegű mezőt valamiért szöveggé kell módosítani, akkor jól jöhet.


Másrészt nem tudjuk, hogy mi van az $id változóban. Lehet, hogy ez:

$id = "'" . $mysqli->real_escape_string($_POST['id']) . "'";

Tehát lehet, hogy a $id változó elve tartalmaz idézőjelezést.


> Persze ez se ér semmit ha $id nincs ellenőrizve, escape -elve.

> [link]


Igen, igen… Bólogat, bólogat… :-)

2015. okt. 28. 10:38
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:
2015. okt. 28. 11:18
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:
(Amúgy ezt a kulcs-szoftos fiuk is benézték, nem csak webes részen, ha kapna egy sajtót mennyire gyenge a védelmük, úgy esne a részvényük ára, mint egy darab kő, de mivel nagy fejesek is tagok, így nem igen születik róla hír.)
2015. okt. 28. 11:24
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:
Köszönöm a válaszokat!
2015. okt. 29. 13:31

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!