0

给出的代码在 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;
 ?>
4

3 回答 3

2

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

  • 一个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()行。

于 2010-05-05T06:28:40.913 回答
1

它应该可以工作,假设 mysql 和 mysqldump 在 Windows PATH 变量中。尽管您应该在 -u 和根目录之间添加一个空格。

于 2010-05-05T06:29:18.960 回答
1

3注。

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

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

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

例如:

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

未经测试,但多数民众赞成在一般的想法。

于 2010-05-05T07:50:42.140 回答