La natura delle query di alter table, per quanto ne so non sono dichiarazioni preparate. Ma dovresti chiamare le funzioni beginTransaction
e commit()
per la maggior parte delle query di modifica della tabella.
$dbh->beginTransaction();
/* Change the database schema and data */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
$sth = $dbh->exec("ALTER TABLE `dessert` ADD `field1` VARCHAR(24) NOT NULL");
/* Commit changes */
$dbh->commit();
Anche se è possibile utilizzare le istruzioni preparate ed eseguire per quanto ne so.
NOTA:
MySQL chiama implicitamente la funzione commit() sulla CREATE TABLE
e DROP TABLE
query, quindi rollback non è possibile.
Inoltre, se desideri passare le variabili a una query di tabella alternativa, assicurati di disinfettare l'input dell'utente (se è da dove proviene) e crea una procedura memorizzata sul tuo db, quindi chiamala usando PDO e allega le tue variabili per inout. Solo un pensiero riguardo a come è stata formulata la tua domanda.
poiché non è riuscito, non è possibile. – hjpotter92
@TheJumpingFrog poiché ho posto molte domande sullo stack overflow che non hanno superato i test, a ognuna di esse è stata data una risposta. – cgwebprojects