Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man die SQL-Einschleusung von dieser Abfrage verhindern?

Wenn der Platzhalter in Anführungszeichen gesetzt wird, handelt es sich nicht um einen Platzhalter, sondern um den Literalwert. Versuchen Sie es so:

$a = Model::model()->findAllBySql(
                      'SELECT * FROM table WHERE name like :name',
                      array(":name"=> '%' . $_GET['name'] . '%')
                      );

Der Treiber fügt derzeit automatisch die Doppelpunkte an, aber in Zukunft möglicherweise nicht mehr, es ist am besten, wenn der Name mit dem Platzhalter übereinstimmt.