2010-11-19 5 views
0

J'ai essayé beaucoup de scripts pour sauvegarder ma base de données mySQL mais ils échouent tous ..
phpMyAdmin est le seul qui échappe à mes chaînes comme il se doit.
Qu'est-ce qui ne va pas ici?encodage et échappement dans les scripts de sauvegarde de base de données PHP

Dans certaines chaînes de ma base de données j'ai des caractères internationaux comme "é" etc. Le vidage phpMyAdmin montre aussi aussi des choses comme "\ r \ n", qui semblent casser les scripts.

Est-ce un problème d'encodage? Ne devrais-je pas avoir "é" dans ma base de données en premier lieu?
Tout ce codage, s'échappant est bien au-dessus de ma tête, je me bats toujours avec ça. Je veux juste tout ce qui est humainement lisible dans ma base de données et lisible par l'homme dans le navigateur. Pourquoi est-ce si difficile?
J'essaye de tout mettre en UTF-8, mais quand j'envoie des choses comme avec json_encode() j'ai tout cela \ u00e9 \ dans la base de données.

J'ai trouvé un Snipped qui va lien ceci:

$tableName = 'albums'; 
$backupFile = 'albums.sql'; 
$query  = "SELECT * INTO OUTFILE '$backupFile' FROM '$tableName'"; 
$result  = mysql_query($query); 
if (!$sql_res) { 
    echo "error"; 
} 

les sorties du navigateur « erreur »

+0

quel module PHP utilisez-vous? PDO, mysql ou mysqli? – stillstanding

+0

eh, mysql. Je ne sais même pas ce que les autres sont .. – FFish

+1

le code SQL a une erreur, il devrait être: SELECT * FROM '$ tableName' INTO OUTFILE '$ backupFile'; et votre vérification d'une erreur regarde une variable inexistante, donc elle sera toujours fausse – Patrick

Répondre

0

si vous avez commande un accès en ligne et ont mysqldump installé (je crois que la plupart des installations de MySQL ont) puis il suffit d'exécuter

mysqldump [database-name] -u[username] =p'[password]' > db_backup.sql 

reference

+0

Je veux écrire la sauvegarde avec PHP, pas avec la ligne de commande – FFish

+0

Ensuite, exec ("mysqldump [database-name] -u [nom d'utilisateur ] = p '[mot de passe]'> db_backup.sql "); –

+0

essayé aussi bien, juste une page blanche .. – FFish

0

Essayez ceci:

$tableName = 'albums'; 
$backupFile = 'albums.sql'; 
$query  = "SELECT * FROM {$tableName} INTO OUTFILE '{$backupFile}'"; 
$result  = mysql_query($query); 
if (!$result) { 
    echo "error"; 
} 

Je suppose que vous êtes sûr que votre connexion MySQL a été correctement formé et que db a été sélectionné ok.

Questions connexes