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

Parâmetros CDbCriteria com classes de caracteres regex


O PHP não substituirá espaços reservados dentro de strings, ou seja, entre aspas. Como em:
$criteria->addCondition('col = :app'); // param can be replaced
$criteria->addCondition('col = ":app"'); // param can't be replaced

Portanto, precisamos usar o CONCAT() para realmente gerar a string para regexp, em vez de fornecer a string nós mesmos, assim:
$criteria->addCondition('col regexp CONCAT("[[:<:]]", :app, "[[:>:]]")');

OU, vincule a própria regex inteira:
$criteria->addCondition('col regexp :regexp');
$criteria->params = array(':regexp'=>'[[:<:]]'.$app.'[[:>:]]');