Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

como evitar a injeção de sql desta consulta?


Quando o espaço reservado é citado, não é um espaço reservado, é o valor literal. Experimente desta forma:
$a = Model::model()->findAllBySql(
                      'SELECT * FROM table WHERE name like :name',
                      array(":name"=> '%' . $_GET['name'] . '%')
                      );

O driver atualmente anexa automaticamente os dois-pontos, mas pode não ser no futuro, é melhor que o nome corresponda ao espaço reservado.