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

Parametri CDbCriteria con classi di caratteri regex

PHP non sostituirà i segnaposto all'interno di stringhe, ovvero tra virgolette. Come in:

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

Quindi dobbiamo usare CONCAT() funzione per generare effettivamente la stringa per regexp, invece di fornire noi stessi la stringa, in questo modo:

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

OPPURE, associa l'intera espressione regolare stessa:

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