Salve a tutti, chiedo scusa se ho sbagliato sezione, ma ero indeciso se mettere la mia domanda qui o in "database" essendo un po' border line.
In ogni caso vi spiego il mio dubbio: mi sto addentrando nel magico mondo delle chiamate al database mysql tramite PDO presente in php versione 5.1 in poi.
Ho scritto un array associativo di valori di questo tipo:
Ora, questo array mi serve per un inserimento in database di questo genere:codice:$nomi = array( 'nome1' => 'Topolino', 'nome2' => 'Pippo', 'nome3' => 'Paperino' );
Fin qui tutto bene, mi fa il binding dei valori del mio array associativo e mi scrive la riga nel database.codice:$query = "INSERT INTO personaggi (nome1, nome2, nome3) VALUES (:nome1, :nome2, :nome3)"; $inserimento = $conn->prepare($query); $inserimento->execute($nomi);
Tuttavia, prima di fare questa query, io ho bisogno di uno solo dei valori associativi per un'altra query. Allora ho pensato di scrivere in modo analogo:
Mi sembrava corretto e ho immaginato che se anche l'array associativo contenesse dei valori in più rispetto a quelli che mi servivano, avrebbe utilizzato solo quello indicato, tanto più che il nome è giusto. Invece nada, la query non ne voleva sapere di funzionare.codice:$query = "DELETE FROM personaggi WHERE nome1 = :nome1"; $del = $conn->prepare($query); $del->execute($nomi);
Alla fine ho risolto in questa maniera:
Per carità, niente di grave, o usato bindParam() per associare specificatamente il valore dell'array di cui volevo fare il binding. Tuttavia mi piacerebbe capire cosa effettivamente non funzionava nella mia query precedente e se, davvero, quando inserisco un array associativo in execute() davvero devo per forza utilizzare tutti gli elementi dell'array, altrimenti non funziona.codice:$query = "DELETE FROM personaggi WHERE nome1 = :nome1"; $del = $conn->prepare($query); $del->bindParam(':nome1', $nomi["nome1"]); $del->execute();
Spero che qualcuno riesca a darmi maggiori informazioni.

Rispondi quotando