Heim > Artikel > Backend-Entwicklung > Lösen Sie das Problem, dass IN-Abfragen im Yii-Framework nur eine parametrisierte Abfrage abfragen können
Wie kann das Problem gelöst werden, dass in der parametrisierten Abfrage des Yii-Frameworks nur eine IN-Abfrage abgefragt werden kann? In diesem Artikel wird hauptsächlich die Lösung des Problems vorgestellt, dass in der parametrisierten Abfrage des Yii-Frameworks nur eine IN-Abfrage abgefragt werden kann IN-Abfrage im Yii-Framework in Form von Beispielen. Der Grund, warum Sie nur eine Funktion und die zugehörigen Funktionen und Verwendungsfähigkeiten der FIND_IN_SET-Funktion überprüfen können, kann von Freunden, die sie benötigen, nachgelesen werden. Ich hoffe, es hilft allen.
Die Details sind wie folgt:
Bei der Verwendung der Parametrisierung für die IN-Abfrage im yii-Framework war das Ergebnis nicht wie erwartet
$sql =<<<SQL SELECT id FROM tb WHERE id IN(:ids) SQL; $db = GeneralService::getSlaveDB(); $result = $db->createCommand($sql)->query([':ids' => '1013,1015,1017'])->readAll(); print_r($result);
Array ( [0] => Array ( [id] => 1013 ) )
Also habe ich mich umgedreht über die relevanten Informationen im yii-Framework Aus dem Quellcode habe ich herausgefunden, dass eine PDO-Abfrage verwendet wurde, also habe ich PDO-bezogene Informationen abgefragt und den Grund herausgefunden: kann einen Wertesatz nicht ersetzen mit Platzhaltern.
SELECT id FROM tb WHERE userid IN ( ? );
Da Sie nun den Grund kennen, wollen wir eine alternative Methode finden, die genau die Anforderungen erfüllt.
$sql =<<<SQL SELECT id FROM tb WHERE FIND_IN_SET(id, :ids) SQL; $db = GeneralService::getSlaveDB(); $result = $db->createCommand($sql)->query([':ids' => '1013,1015,1017'])->readAll(); print_r($result);
Array ( [0] => Array ( [id] => 1013 ) [1] => Array ( [id] => 1015 ) [2] => Array ( [id] => 1017 ) )
Eine einfache populäre Wissenschaft der FIND_IN_SET-Funktion
FIND_IN_SET(str,strlist)
Wenn sich die Zeichenfolge str in der Zeichenfolgenliste strlist befindet, die aus N Unterketten besteht, liegt der Rückgabewert zwischen 1 und N.
Eine String-Liste ist ein String, der aus durch „,“-Symbole getrennten Unterketten besteht. Wenn das erste Argument eine konstante Zeichenfolge und das zweite eine Spalte vom Typ SET ist, ist die Funktion FIND_IN_SET() für die Verwendung von Bitberechnungen optimiert.
Wenn str nicht in strlist enthalten ist oder strlist ein leerer String ist, ist der Rückgabewert 0. Wenn ein Parameter NULL ist, ist der Rückgabewert NULL. Diese Funktion funktioniert nicht ordnungsgemäß, wenn das erste Argument ein Komma (',') enthält.
[ps] Die aus Kommas bestehende Zeichenfolge in strlist kann nicht wie üblich durch das Einfügen eines Leerzeichens rechts vom Komma erkannt werden.
Verwandte Empfehlungen:
Detaillierte Erläuterung der restful API-Autorisierungsüberprüfung von yii2
Detaillierte Erklärung, wie Yii2 einen benutzerdefinierten unabhängigen Validator implementiert
Yii2 integriert Xunsou, um einen effizienten Abruf der chinesischen Wortsegmentierung zu erreichen
Das obige ist der detaillierte Inhalt vonLösen Sie das Problem, dass IN-Abfragen im Yii-Framework nur eine parametrisierte Abfrage abfragen können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!