Antwort an „Rolf B“ verfassen

Hallo Michael,

das Grundproblem besteht weiter: in s_fahrzeugnummer befindet sich SQL Syntax, von der Du erwartest, dass sie als SQL ausgeführt wird.

Das von Dir gezeigte phpmyAdmin-SQL ist nicht äquivalent zu dem von Deinem PHP abgeschickten SQL. Was Du da versuchst, ist SQL Injektion, und genau die wird von Query-Parametern verhindert.

Wenn Du SQL Injektion haben willst, musst Du das im SQL Statement tun, nicht in den Query-Parametern.

Funktionierende SQL Injektion:

$x = "123%' OR dings LIKE '%456";
$sql = "SELECT a,b,c FROM tab WHERE dings LIKE '%$x%'";
$statement = $db->query($sql);

Ausgeführt wird

SELECT a,b,c
FROM   tab
WHERE  dings LIKE '%123%' OR dings LIKE '%456%'

Dein Versuch, mit SQL Parametern:

$x = "123' OR dings LIKE '%456";
$sql = "SELECT a,b,c FROM tab WHERE dings LIKE :x_var";
$statement = $db->prepare($sql);
$statement->execute([ "x_var" => "%$x%" ]);

Ausgeführt wird

SELECT a,b,c
FROM tab
WHERE dings LIKE '%123%\' OR dings LIKE \'%456%'

Siehst Du den Unterschied?

(Ich speichere das erstmal um zu sehen ob das Forum das brauchbar highlighted, es geht noch weiter)

Rolf

--
sumpsi - posui - obstruxi
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen