sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo evitar la inyección de sql de esta consulta?

Cuando se cita el marcador de posición, no es un marcador de posición, es el valor literal. Pruébalo de esta manera:

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

Actualmente, el controlador agrega automáticamente los dos puntos, pero es posible que no lo haga en el futuro; es mejor que el nombre coincida con el marcador de posición.