Mysql
 sql >> Base de données >  >> RDS >> Mysql

Paramètres CDbCriteria avec classes de caractères regex

PHP ne remplacera pas les espaces réservés à l'intérieur des chaînes, c'est-à-dire entre guillemets. Comme dans :

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

Par conséquent, nous devons utiliser mysql CONCAT() fonction pour générer réellement la chaîne pour regexp, au lieu de fournir la chaîne nous-mêmes, comme ceci :

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

OU, liez la regex entière elle-même :

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