Ich versuche, eine vorbereitete PDO-Anweisung für die Verwendung in einer Datenbankabfrage zu verwenden, die folgendermaßen aussieht, wobei die Platzhaltervariablen durch die Zahlen in Anführungszeichen dargestellt werden: "123 "und‚456‘:Sicherheit für vorbereitete SQL-Anweisung mit REGEX in Abfrage
SELECT `user_ID` as `ID`
FROM `usermeta`
WHERE (`meta_key` = 'custom_fields')
AND (`meta_value` REGEXP '.*"ABC";.*s:[0-9]+:"123".*')
AND (`meta_value` REGEXP '.*"DEF";.*s:[0-9]+:"456".*')
Meine Frage ist, wäre die beste Praxis für den gesamten REGEX Ausdruck zu binden sein, oder einfach nur das‚123‘und‚456‘Variablen (ist das überhaupt möglich in einem regulären Ausdruck) oder etwas ganz anderes?
Mit anderen Worten, die dies bevorzugt ist,:
SELECT `user_ID` as `ID`
FROM `usermeta`
WHERE (`meta_key` = 'custom_fields')
AND (`meta_value` :REGEXP1)
AND (`meta_value` :REGEXP2)
$stmt->bindParam(':REGEXP1', "REGEXP '.*"ABC";.*s:[0-9]+:"123".*'");
$stmt->bindParam(':REGEXP2', "REGEXP '.*"DEF";.*s:[0-9]+:"456".*'");
Oder das? (Ich weiß, dass es einige Probleme mit doppelten Anführungszeichen geben würde, die den Platzhalter umgeben.)
SELECT `user_ID` as `ID`
FROM `usermeta`
WHERE (`meta_key` = 'custom_fields')
AND (`meta_value` REGEXP '.*"ABC";.*s:[0-9]+:":value1".*')
AND (`meta_value` REGEXP '.*"DEF";.*s:[0-9]+:":value2".*')
$stmt->bindParam(':value1', '123');
$stmt->bindParam(':value2', '456');
Danke.
Brilliant . Vielen Dank. – user1596165