Rolf B: PHP PDO Problem

Beitrag lesen

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