Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有where子句//dbname(带点或分数)的单个表的mysqldump_Php_Mysql_Cron_Timestamp - Fatal编程技术网

Php 带有where子句//dbname(带点或分数)的单个表的mysqldump

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脚本的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 = 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);