特定のデータベースの特定のテーブルをバックアップするPHPスクリプトを指し示すcronjobを設定しようとしています。where句を持つ単一テーブルのmysqldump // dbnameにドットまたはヒットコアが付きます
Crontabが動作しています。 CLIのPHPが動作しています。
<?php
$host = 'crm_host_be';
$db = 'db_crm_be';
// Define the database settings
require('/var/www/'.$host.'/data_'.$db.'.php');
// connect to the database
$link = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD);
mysql_set_charset('utf8',$link);
mysql_select_db(DB_DATABASE);
// Get Offers list
$get_offers_list = 'SELECT * FROM crm_offers ORDER BY date_of_change DESC ';
$q_offers_list = mysql_query($get_offers_list);
while($offers_list = mysql_fetch_array($q_offers_list)) {
//echo $offers_list['offer_uid']."\n";
$ouid = $offers_list['offer_uid'];
mysqldump -u "db_crm_be_u" -p'1234567890' --databases db_crm_be crm_offers --where="offer_uid=\"".$ouid.\"" > 'date +\%Y\%m\%d_\%H\%M\%S'.$ouid.sql
}
?>
DBおよびSELECTへの接続がOKである(エコーCLIの各OFFER_ID):
は、ここで私が使用しようとしているPHPコードです。
しかし、私はCLIでこれを取得しています:
PHP Parse error: syntax error, unexpected '"db_crm_be_u"' (T_CONSTANT_ENCAPSED_STRING) in /var/www/crm_host_be/db_offers_backup.php on line 35
私はtimestamp-を生成するために、変数の使用を($ホスト、$デシベル、$ ouid、...)を保持したいのですがCRMの "ユニークオファー"に基づいて.sqlをベースにしています。
my DBとTABLESの両方にアンダースコアが付いています。
どのように私は全体的な名前を変更することなくこれを精巧に解決できますか?
また、各オファー($ ouid)のタイムスタンプとサフィックスを組み合わせてファイル名を生成する方法はありますか?
ご協力いただきありがとうございます。
mysqldumpはPHP関数ではなく、シェルコマンドです。 – MrDarkLynx
@ PdC-Stack:B Desaiの答えと、mysqldumpへのパスについての発言を参照してください。 –