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:
codice:
$nomi = array( 'nome1' => 'Topolino', 'nome2' => 'Pippo', 'nome3' => 'Paperino' );
Ora, questo array mi serve per un inserimento in database di questo genere:
codice:
$query = "INSERT INTO personaggi (nome1, nome2, nome3) VALUES (:nome1, :nome2, :nome3)";
$inserimento = $conn->prepare($query);
$inserimento->execute($nomi);
Fin qui tutto bene, mi fa il binding dei valori del mio array associativo e mi scrive la riga nel database.
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:
codice:
$query = "DELETE FROM personaggi WHERE nome1 = :nome1";
$del = $conn->prepare($query);
$del->execute($nomi);
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.
Alla fine ho risolto in questa maniera:
codice:
$query = "DELETE FROM personaggi WHERE nome1 = :nome1";
$del = $conn->prepare($query);
$del->bindParam(':nome1', $nomi["nome1"]);
$del->execute();
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.
Spero che qualcuno riesca a darmi maggiori informazioni.