2010-03-15 6 views
0

Je ne sais pas si je peux le faire de cette façon. Je veux obtenir l'instantané actuel de la base de données et l'envoyer via le serveur FTP, ces deux fonctionnalités devraient être implémentées dans les scripts PHP.Prendre l'instantané actuel de la base de données et l'envoyer à FTP dans les mêmes scripts PHP: conseils nécessaires

Voici les étapes auxquelles je pense en ce moment.

Dans mes scripts php (essentiellement étends une AOP dans ma classe Dao, puis la préparation de la requête),

$qry = SELECT * FROM MyTablename; 
$stmt = $this->prepare($qry); 
$stmt = $this->execute(); 

Maintenant, je vais stocker $stmt dans le fichier csv en utilisant fputcsv ou j'exécuter la commande sql de le script lui-même et que d'essayer de stocker le résultat dans la $file(csv file) note ici que je n'ai pas un fichier csv avec moi à ce stade, essentiellement je vais devoir créer un et disons son $file, donc alors

$file = fputcsv($stmt); or $file = exec("Select * from MyTablename"); 

Est-ce que cela va mettre tous les enregistrements dans le fichier? Si oui, j'utiliserai la fonctionnalité FTP pour transférer le fichier vers le dossier FTP.

Je ne sais pas si cette approche fonctionnerait et ont également des préoccupations quant à la nécessité de préparer les $qry

Toute suggestion ou approche différente conseillé serait très apprécié.

Merci !!!

+0

Down électeurs, s'il vous plaît laissez un commentaire !!! – Rachel

Répondre

1

essayer quelque chose comme ceci:

mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 
mysql_select_db($dbname); 
$list = array(); 
$q = mysql_query("SELECT * from table"); 

while($row = mysql_fetch_assoc($q)){ 
    $list[] = $row; 
    } 
$fp = fopen("file.csv", 'w+'); 
foreach ($list as $line) { 
    fputcsv ($fp, implode(',', $line)); 
} 

puis essayez:

$conn_id = ftpconnect('host',21); 
$login_result = ftp_login($conn_id, 'user_name', 'user_pass'); 
ftp_fput($conn_id, 'file.csv', $fp, FTP_ASCII); 

ftp_close($conn_id); 
fclose($fp); 

j'écrire le code sans le tester, mais doit être quelque chose comme ça;)

bonne chance.