Mysql
 sql >> Datenbank >  >> RDS >> Mysql

CDbCriteria-Parameter mit Regex-Zeichenklassen

PHP ersetzt keine Platzhalter innerhalb von Strings, d. h. innerhalb von Anführungszeichen. Wie in:

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

Daher müssen wir mysql's CONCAT() Funktion, um die Zeichenfolge für Regexp tatsächlich zu generieren, anstatt die Zeichenfolge selbst bereitzustellen, wie folgt:

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

ODER binden Sie die gesamte Regex selbst:

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