Системный вызов PHP MySQL создает пустой файл, не имеет возвращаемого значения и не выдает сообщение об ошибке.

Я потратил больше часов, чем могу себе представить, пытаясь выяснить это 🙂 Файл создан успешно, однако он либо равен 0 байт, либо содержит справочную страницу mysql. Я не могу заставить это работать правильно или выдает сообщение об ошибке.

Запрос выполняется правильно в MySQLAdmin. Я могу заменить вызов mysql на ls, и он передает список файлов в мой выходной файл. Строки хоста, пользователя и пароля корректны и хорошо отформатированы. Приводит меня к мысли, что с моим синтаксисом что-то не так?

$command = 'mysql --host=localhost --user='.DBASEUSER.' --password='.DBASEBPSWD.' --database='.DBASE.' -execute=SELECT Real_acct.Mail_Addr_1 from Real_acct > ../outputfiles/output.txt';
$returnVal = system($command, $returnVal);

1

Решение

У вас есть только один тире (-) до вашего execute параметр. Возможно, вам также понадобятся двойные кавычки вокруг вашего запроса:

$command = 'mysql --host=localhost --user='.DBASEUSER
.' --password='.DBASEBPSWD
.' --database='.DBASE
.' --execute="SELECT Real_acct.Mail_Addr_1 from Real_acct" > ../outputfiles/output.txt';
$returnVal = system($command, $returnVal);
1

Другие решения

Других решений пока нет …