2011-07-07 1 views
0

J'essaie de travailler avec un script écrit par un développeur précédent qui vide un certain nombre de tables différentes. Le problème est maintenant que j'ai ajouté une table appelée 'order' et casse la boucle.Truncate table ineach rompre avec le nom de table 'order'

set_time_limit (0); 
$conn = mysql_connect('localhost', 'root', '') or die ('Error connecting to mysql'); 
mysql_select_db('database-name'); 

$tables = array(
    'address', 
    'manufacturer', 
    'order', 
    'voucher_history', 
    'voucher_theme', 
); 

foreach ($tables as $table) { 
    $sql = sprintf('TRUNCATE TABLE %s', $table); 
    printf('%s %s ', $sql, str_repeat('.', 73 - strlen($sql))); 
    $result = mysql_query($sql); 
    if (!$result) { 
     die('Invalid query: ' . mysql_error()); 
    }else { 
     echo "Done!<br />"; 
    } 
} 

Répondre

1

order est un mot-clé réservé de sorte qu'il se doit entre guillemets arrières:

'`order`', 
+0

puis-je l'ajouter dans le fichier sprintf()? –

+1

@John Vous voulez dire 'sprintf ('TRUNCATE TABLE \'% s \ '', $ table)'? Pourquoi pas? –

0

BACKQUOTE vos noms de table. L'ordre est un mot-clé réservé et entraînera la rupture de votre requête

+0

Mieux encore, ne nommez pas vos tables en utilisant des mots-clés. –

Questions connexes