exec()在这里返回什么?

时间:2015-08-20 06:48:35

标签: php mysql

以下是导入数据库的查询字符串:

$query = "mysql --user" . $this->userName . " --password " . $this->DatabaseName . " < " . $completePathOfSQLFile;
$resultQuery  = exec($query);

命令执行正常。但是exec函数返回了什么?我需要确保操作正确执行并相应地返回true | false

2 个答案:

答案 0 :(得分:1)

来自the manual

  

返回值

     

命令结果的最后一行。

但请注意,您还可以将第三个参数传递给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;
 }