Bei Verwendung von PDO zum Binden eines Arrays von Werten an eine MySQL IN-Anweisung besteht das Standardverhalten darin, den gebundenen Wert als zu behandeln eine einzelne Zeichenfolge, die alle Elemente im Array umfasst und nicht die gewünschten einzelnen Platzhalter.
Es gibt mehrere Ansätze um dieses Problem zu beheben:
1. Direkter String-Aufbau:
* Construct the IN clause within the query string, directly including the values instead of binding them. This method avoids the binding issue but requires hard-coding the values in the query.
2. find_in_set Funktion:
* Utilize the find_in_set function to search for values in a comma-separated string. Modify the query as follows: ``` SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE find_in_set(cast(products.id as char), :products) ``` Note that this approach may impact performance for large datasets.
3. Benutzerdefinierte Funktion:
* Create a user-defined function that splits the comma-separated values. This function can be used in the IN clause to convert the string to individual values.
Dieser letzte Ansatz wird für Abfragen empfohlen, die häufig auf IN-Klauseln basieren, da er eine verallgemeinerte Lösung bietet.
Das obige ist der detaillierte Inhalt vonWie kann ich Array-Werte mithilfe von PDO ordnungsgemäß an eine MySQL IN-Anweisung binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!