【问题标题】:is the code given in description is executable in Windows system?描述中给出的代码是否可以在 Windows 系统中执行?
【发布时间】:2011-02-15 19:02:34
【问题描述】:

给出的代码在 Windows 系统中是否可以执行?因为它似乎是 Linux 命令

   echo 'create database foo2' | mysql -uroot
    mysqldump --skip-triggers -uroot foo | mysql -uroot foo2

已编辑 我正在执行以下代码,但没有得到我期望的结果..

<?php 
mysql_connect('localhost','root','********');
echo 'create database pranav_chk'. | mysql -u root
    mysqldump --skip-triggers -u root pranav_test | mysql -u root pranav_chk;
 ?>

【问题讨论】:

  • 你不能简单地将 unix shell 脚本的内容填充到 php 脚本中。
  • @Volkerk,这就是我想知道的,怎么做,我不知道,请指导我,我希望你明白我在这里想要做什么......
  • 只需将这两行代码放在一个名为 xyz.cmd 或 xyz.bat 的文件中

标签: php mysql command-line shellexecute windows-shell


【解决方案1】:

代码使用三个命令行功能:

  • echo 命令
  • 通过管道连接命令(| 符号)
  • mysql 命令行客户端

这三个在 Windows 和 Linux 上都可用并且工作相同(就它们在此处使用的程度而言),因此代码实际上是可移植的。

编辑: 代码需要在 shell 中运行,不能直接放到 PHP 脚本中。你必须使用exec(),像这样:

<?php
  exec("echo 'create database foo2' | mysql -uroot");
  exec("mysqldump --skip-triggers -uroot foo | mysql -uroot foo2");
?>

然而,mysql_connect() 之前的调用对你没有任何好处,因为它只对 PHP 脚本有效。您必须直接通过命令行进行身份验证。或者,您可以使用它和 mysql_create_db() 替换第一行 exec()

【讨论】:

    【解决方案2】:

    3 个音符。

    首先,PHP脚本中的数据库连接不与外部系统命令共享。

    其次,您需要向命令行提供密码。

    三、使用exec函数运行你的命令。

    例如:

    <?php
    $PASSWORD="YOURPASSWORD";
    exec("echo 'create database foo2' | mysql -u root -p $PASSWORD");
    ?>
    

    未经测试,但这是一般的想法。

    【讨论】:

    【解决方案3】:

    它应该可以工作,假设 mysql 和 mysqldump 在 windows PATH 变量中。虽然您应该在 -u 和根之间添加一个空格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多