Det ville det, medmindre du inkluderer enkelte anførselstegn i det postede name
, hvilket ville give dig mulighed for at bryde ud af citaterne. Eksempel, indsend navnet som:
' or 1 or '
WHERE-sætningen bliver:
WHERE id = '' or 1 or '';
Dette ville matche og hente alle rækker i tabellen på grund af or 1
en del. Som du kan se, bryder den ud af anførselstegnene for at injicere noget SQL, og derefter går den tilbage i anførselstegnene for at gøre forespørgslen gyldig.
Nej, men hvis det blev udført med mysqli_multi_query
så ja, du kan tilføje flere forespørgsler til slutningen.
Generelt ja, men en forberedt erklæring ville være bedre. Brug escaping, WHERE
klausul ville blive (ved at bruge mit eksempel ovenfor):
WHERE id = '\' or 1 or \'';
Dette er ikke længere sårbart, fordi anførselstegnene ikke kan brydes ud af, og vil kun matche rækker, hvis name
svarer bogstaveligt talt til ' or 1 or '
hvilket naturligvis er usandsynligt.