2015-05-12 6 views
1

Я пытаюсь написать функцию, которая возвращает весь дамп SQL, используя этот код:Mysql дамп с помощью PHP

$command = "C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin\\mysqldump --add-drop-table --host=$hostname 
    --user=$username "; 
if ($password) 
     $command.= "--password=". $password ." "; 
$command.= $dbname; 
var_dump(terminal($command)); 

function terminal($cmd) 
{ 
    if (function_exists('system')) 
    { 
     ob_start(); 
     system($cmd, $retVal); 
     $output = ob_get_contents(); 
     ob_end_clean(); 
     $function_used = "system"; 
    } 
    else if(function_exists('passthru')) 
    { 
     ob_start(); 
     passthru($cmd, $retVal); 
     $output = ob_get_contents(); 
     ob_end_clean(); 
     $function_used = "passthru"; 
    } 
    else if(function_exists('exec')) 
    { 
     exec($cmd, $output, $retVal); 
     $output = implode("n", $output); 
     $function_used = "exec"; 
    } 
    else if(function_exists('shell_exec')) 
    { 
     $output = shell_exec($cmd); 
     $function_used = "shell_exec"; 
    } 
    else 
    { 
     $output = "Cannot execute shell commands"; 
     $retVal = 1; 
    } 
    return array('output' => $output, 'returnValue' => $retVal, 'functionUsed' => $function_used); 
} 

Учетные базы данных являются правильными, когда я запускаю эту команду в обычной командной строке это получить желаемый результат.

Проблема в том, что, когда я пытаюсь использовать эту команду, либо я использую функцию i, я всегда получаю пустую строку в качестве вывода. С другой стороны, возвращаемое значение всегда равно 1, что приводит к истинному, я думаю, и означает, что функция выполнена правильно, иначе я получу ложное возвращаемое значение.

Например, я использую «систему», так как это первый кулак, с которым я сталкиваюсь. Является ли это corrent, как я получаю выход?

С уважением

ответ

1

Поскольку у вас есть пробелы в пути к исполняемому файлу, необходимо заключить его в двойные кавычки.

$command = "\"C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin\\mysqldump\" --add-drop-table --host=$hostname --user=$username "; 
+0

спасибо, что это сработало для меня! – Combinu

Смежные вопросы