以下是导入数据库的查询字符串:
$query = "mysql --user" . $this->userName . " --password " . $this->DatabaseName . " < " . $completePathOfSQLFile;
$resultQuery = exec($query);
命令执行正常。但是exec
函数返回了什么?我需要确保操作正确执行并相应地返回true | false
。
答案 0 :(得分:1)
返回值
命令结果的最后一行。
但请注意,您还可以将第三个参数传递给exec
,这将是命令的返回状态。非零值通常是错误状态,mysql
客户端可以合理地使用它。该手册也有其他各种方法的说明,值得一读。
答案 1 :(得分:1)
正如Quentin所说,exec的第三个参数是return_var
string exec ( string $command [, array &$output [, int &$return_var ]] )
如果出现错误,mysql将返回非零退出代码。
# mysql -u root -e "SELECT 1" > /dev/null 2>&1
# echo $?
0 <- returns 0 for success
# mysql -u root -e "SOMETHING WRONG" > /dev/null 2>&1
# echo $?
1 <- Wrong statement
请注意,如果文件为空,它仍将返回&#34; 0&#34;,因为没有给出mysql客户端的SQL语法错误或错误参数。
所以你可以将它添加到你的代码中:
$query = "mysql --user" . $this->userName . " --password " . $this >DatabaseName . " < " . $completePathOfSQLFile;
$resultQuery = exec($query,$output,$return_var);
if (intval($return_var) !== 0) {
echo "error: ".$output;
}