Mysql
 sql >> Database >  >> RDS >> Mysql

come impedire l'iniezione di sql da questa query?

Quando il segnaposto è tra virgolette non è un segnaposto, è il valore letterale. Prova in questo modo:

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

Il driver attualmente aggiunge automaticamente i due punti ma potrebbe non succedere in futuro, è meglio che il nome corrisponda al segnaposto.