Melyik a jobb, biztonságosabb módszer változó query string-be illesztésére az alábbiak közül és miért?
Mondjuk így kezdem:
$id = mysqli_real_escape_string($mysqli,$id);
De utána melyik a 3 közül?
1, $qry = "select * from tabla where id='$id'";
2, $qry = "select * from tabla where id='".$id."'";
3, $qry = printf("select * from tabla where id=%d", $id);
Az 1. és 2. ekvivalens, de az aposztróf miatt nem működik számokkal (vagy ha működik, az SQL szerver tök feleslegesen fog kasztolgatni), a 3. pedig csak számokkal működik (%d miatt).
Használj prepared statement-et és nem kell ilyeneken görcsölni.
1-2 ugyanaz.
3. kiírja outputra és nem a $qry változóba.
:)
Amúgy néztem a változó bindelést,csak azt nem értem,hogy csak PDO-ban működik a 'select * from table where id=:id' módi?
Mert mysqli-ben nem akart menni,vagy én szúrtam el valamit? Ott csak ilyesmit láttam a doksiban:
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
De ez meg nem valami jól olvasható kódot produkál ehhez képest:
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
Valószínű első is nem annyira a prepared statementre gondolt,hanem a PDO-ra.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!