我 try catch 错误输出。
<?php
$output = array();
$command = <<<END
mysql -h$host -u$user --password='$pass' --execute="create database $name;" 2>&1
END;
exec($command, $output, $code);
?>
- $output 没有返回值
- $code 返回 0
但是这个查询在终端中返回一个错误:“数据库已经存在”。
当我删除 2>&1
$command = <<<END
mysql -h$host -u$user --password='$pass' --execute="create database $name;"
END;
exec($command, $output, $code);
- $output 没有返回值
- $code 返回 1
如何获得正确的 $output 和 $code 值?
最佳答案
有同样的问题,只是我导入了一个 .sql 文件而不是使用 --execute
在我添加 2>&1 并使用双引号而不是单引号后它起作用了。
exec("mysql -h $host -u $user -p$pass my_db < \"faulty_sql.sql\" 2>&1",$output);
关于php exec mysql 空输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8007455/