Mysql
 sql >> Base de données >  >> RDS >> Mysql

comment empêcher l'injection sql de cette requête?

Lorsque l'espace réservé est entre guillemets, ce n'est pas un espace réservé, c'est la valeur littérale. Essayez de cette façon :

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

Le pilote ajoute actuellement automatiquement les deux-points, mais ce ne sera peut-être pas le cas à l'avenir, il est préférable que le nom corresponde à l'espace réservé.