Cambia dynamicmente il nome della colonna nell'istruzione PDO

È ansible passare un nome di colonna come parametro in un'istruzione MySQL preparata? Prendi il seguente esempio:

UPDATE Images SET :placement = :imageURL WHERE ID = :titleID; 

PDO aggiunge ' intorno a ciascun parametro, quindi la linea centrale sopra diventa:

 SET 'Homepage' = '1.jpg' 

Quale MySQL non piace. C'è un modo per includere parametri per nomi di field nelle istruzioni PDO e averli accettati?

Altrimenti suppongo che dovrò scrivere diverse istruzioni DOP, a seconda di cosa è stato scelto (?).

Dovresti fare qualcosa del genere:

 $column = 'someColumn'; $stmt = $db->prepare("UPDATE tableName SET {$column} = :columnValue WHERE ID = :recordId"); 

I segnaposto parametrizzati sono solo per valori.

Ti suggerisco di leggere il commento @YourCommonSense pubblicato sulla tua domanda.

In situazioni come questa, utilizzo un diverso tipo di parametri di sostituzione, in questo modo:

 $unitLabel = 'store_number'; $sql = 'select * from users where [unitLabel] = :unit and level = :level;'; $sql = str_replace('[unitLabel]', $unitLabel, $sql); $params = arrays( ':unit' => 300, ':level' => 'admin', ); $stmt = $dbh->prepare($sql); $stmt->execute($params); 

La query SQL preparata finisce per essere elaborata (più o less) come:

 SELECT * FROM USERS WHERE store_number = 300 AND level = 'admin'; 

Che funziona per la mia situazione. Spero che aiuti. 🙂