Salve, non riesco a individuare l'errore di esecuzione di un UPDATE su database SQL.
Prelevo i dati con un SELECT opportuno e li organizzo nei value di una serie di caselle <input> o <textarea> a seconda della lunghezza. Intervengo dove occorre e clicco sul pulsante di invio invocando l'action, cioè la pagina PHP dove c'è l'istruzione di UPDATE, ma ricevo sempre un errore nel senso che viene eseguito l'if di verifica sulla query e il browser stampa il messaggio del die, senza altre informazioni (mysqli_error() vuoto).
Le istruzioni sono grosso modo queste (copio soltanto alcune delle variabili):
Codice PHP:
$id=$riga['id'];
$autori=htmlspecialchars($riga['Autori'],ENT_QUOTES); // per problemi con gli apici/apostrofi
$protagonista=htmlspecialchars($riga['Protagonista'],ENT_QUOTES); // idem
$titolo=htmlspecialchars($riga['Titolo'],ENT_QUOTES); // idem
echo "<form action='modifica.php' method='post' name='modifica' target='_blank'>\n";
echo "<input type='hidden' name='tabella' value='$tabella'>\n<input type='hidden' name='id' value='$id'>\n";
echo "<input type='text' name='autori' size='12' value='$autori'>\n";
echo "<input type='text' name='protagonista' size='12' value='$protagonista'>\n<input type='text' name='titolo' size='12' value='$titolo'>\n";
echo "<input type='submit' value='OK'>\n";
echo "</form>";
In modifica.php poi ho:
Codice PHP:
$tabella=$_POST['tabella'];
$id=$_POST['id'];
$autori=$_POST['autori'];
$autori=str_replace("'","''",$autori);
$protagonista=$_POST['protagonista'];
$protagonista=str_replace("'","''",$protagonista);
$titolo=$_POST['titolo'];
$titolo==str_replace("'","''",$titolo);
$sql = "UPDATE $tabella SET Autori='$autori', Protagonista='$protagonista', Titolo='$titolo' WHERE id=$id";
$result = mysqli_query($link, $sql);
if (!$result) { die('Errore nel database: ' . mysqli_error()); }
Ovviamente i campi oggetto del SET sono correttamente trascritti nella query.
Credevo ci fosse un problema con gli apostrofi/apici, ma ho il problema anche agendo su record con testi del tutto privi di apostrofi!
Ho tentato a indicare $tabella e $id anche con gli apostrofi, niente!
Anche facendo str_replace sull'apostrofo con \', l'echo di $sql stampa \' ma non invia al database!
Nono so più dove sbattere la testa! Tutta la parte del sito dove effettuo dei SELECT funziona, ma nell'invio delle modifiche si blocca e non so come ottenere dettagli sull'errore dato che mysqli_error() è come se non ci fosse nell'istruzione dell'if!
Aggiungo che l'echo di $sql stampa esattamente la query string di UPDATE coi valori al posto delle variabili.