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

Parámetros CDbCriteria con clases de caracteres regex

PHP no reemplazará los marcadores de posición dentro de las cadenas, es decir, entre comillas. Como en:

$criteria->addCondition('col = :app'); // param can be replaced
$criteria->addCondition('col = ":app"'); // param can't be replaced

Por lo tanto, necesitamos usar mysql CONCAT() función para generar realmente la cadena para expresiones regulares, en lugar de proporcionar la cadena nosotros mismos, así:

$criteria->addCondition('col regexp CONCAT("[[:<:]]", :app, "[[:>:]]")');

O, vincule toda la expresión regular en sí misma:

$criteria->addCondition('col regexp :regexp');
$criteria->params = array(':regexp'=>'[[:<:]]'.$app.'[[:>:]]');