php - 使用 PHP exec 调用 MySQL exe 不起作用

标签 php mysql

我有一个非常简单的 PHP exec 脚本,调用 mysql 命令:

  $dbhost = 'localhost';
  $dbuser = 'root';
  $dbpass = 'mypass';
  $db = 'job';
  $file ='job_create.sql';
  $mySQLDir='"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql"';



    if ($dbpass != '') {
        $cmd = $mySQLDir.' -h '.$dbhost.' --user='.$dbuser.' --password='.$dbpass.' < "'.dirname(__FILE__).'\\'.$file.'"';
    } else {
        $cmd = $mySQLDir.' -h '.$dbhost.' --user='.$dbuser.' < "'.dirname(__FILE__).'\\'.$file.'"';
    }

    // echo $cmd;
    exec($cmd,$out,$retval);

我希望上面的脚本调用mysql 命令,传入用户身份验证信息并即时运行job_create.sql

唯一的问题是它不起作用,因为 job_create.sql 没有正常运行。 .我尝试使用以下脚本直接从命令行调用 mysql 命令,

bin\mysql.exe -h localhost --user=root --password=mypass < "job_create.sql"

并且有效。

知道如何解决这个问题吗?

编辑:我从 PHP 命令行调用这个脚本。即,PHP.exe installdb.php

最佳答案

我找到了解决方案

问题是您需要明确地将 $cmd 包含在“”中。即,

exec('"'.$cmd.'"',$out ,$retval);

这是有效的完整代码:

<?php

  $dbhost = 'localhost';
  $dbuser = 'root';
  $dbpass = 'password';
  $db = 'job';
  $file =dirname(__FILE__).'\\'.'job_create.sql';
  $mySQLDir='"C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql.exe"';



    if ($dbpass != '') {
        $cmd = $mySQLDir.' -h '.$dbhost.' --user='.$dbuser.' --password='.$dbpass.' < "'.$file.'"';

    } else {
        $cmd = $mySQLDir.' -h '.$dbhost.' --user='.$dbuser.' < "'.$file.'"';
    }

     echo $cmd;  

   exec('"'.$cmd.'"',$out ,$retval);
   echo "\n";
    echo ($retval);

?>

关于php - 使用 PHP exec 调用 MySQL exe 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/814586/

相关文章:

php - ZF2中MySQL长连接的使用

php - SQL查询调试

mySQL 数据库的 PHP XML 输出

php - 变量是否通过 PHP 从一个单独的脚本转移到另一个脚本?

java - 在只读服务器上使用java在Mysql中创建临时表导致错误

php - 如何断言未经验证?

php - 检查 php-code w/o php-cli 的语法,可能吗?

php - Woocommerce:添加功能以关闭 "add to cart"成功消息弹出窗口

php - 计算给定的开始日期和结束日期集的平均时间

mysql - 从 drupal 检索数据不起作用