Php 带有where子句//dbname(带点或分数)的单个表的mysqldump
我试图设置一个指向php脚本的cronjob来备份特定数据库中的特定表 Crontab正在工作。 CLI中的PHP正在工作 以下是我尝试使用的PHP代码:Php 带有where子句//dbname(带点或分数)的单个表的mysqldump,php,mysql,cron,timestamp,Php,Mysql,Cron,Timestamp,我试图设置一个指向php脚本的cronjob来备份特定数据库中的特定表 Crontab正在工作。 CLI中的PHP正在工作 以下是我尝试使用的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 = mysq
<?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
}
?>
我希望保留变量用法($host、$db、$ouid,…),以便在CRM中为每个“唯一报价”生成基于时间戳的.sql
my DB和表的名称中都有下划线
我如何才能体面地解决这个问题,而不被迫重新命名整个事件
另外,如何结合时间戳和每个特定报价的后缀($ouid)来生成文件名
提前感谢您的帮助。您需要执行命令。首先将其保存为字符串,然后使用
exec
$mysql_cmd = "mysqldump -u db_crm_be_u -p1234567890 --databases db_crm_be crm_offers --where=offer_uid=\"".$ouid."\" > date +\%Y\%m\%d_\%H\%M\%S".$ouid.".sql";
exec($mysql_cmd);
mysqldump
是一个shell命令,不是PHP函数。@PdC堆栈:请参阅B Desai的答案和有关mysqldump路径的备注。您可能希望在此处使用mysqldump的完整路径。从cron运行时,默认搜索路径可能丢失是,但如果存在默认路径,则不需要。我刚刚给了你一双眼睛。。您正在编写@PdC Stack,它将从您的评论中获得:P
$mysql_cmd = "mysqldump -u db_crm_be_u -p1234567890 --databases db_crm_be crm_offers --where=offer_uid=\"".$ouid."\" > date +\%Y\%m\%d_\%H\%M\%S".$ouid.".sql";
exec($mysql_cmd);