C:\>mysql -uroot -padmin
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.0.37-community-nt-log MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| attendance |
| fusionchartsdb |
| mysql |
| sugarcrm |
| test |
+--------------------+
6 rows in set (0.09 sec)
mysql> use mysql;
Database changed
mysql>
所以我想通过mysql -uroot -padmin
开始一个过程,在那个过程中我想运行这些语句:
show databases
use mysql
insert xxx (..) values (..)
如何在PHP中完成?
答案 0 :(得分:0)
您可以编写自己的控制台或使用名为PHPMyAdmin的现成控制台。如果你的意图只是使用web-frontend与mysql服务器进行交互。
虽然写你自己可能很棘手。不幸的是,HTTP服务器不是交互式的。 HTTP是无状态协议。因此,您必须找到一种在请求之间保存状态的方法。解决方案之一是使用持久连接。但由于目标不明确,很难提出任何确定的建议。
答案 1 :(得分:0)
我认为我不完全听从你的问题......
如果您尝试在PHP中使用MySQL执行语句,则可以使用mysql_* functions。
如果您只想通过命令行执行一系列命令,可以使用
`mysql -u root -p admin --execute "show databases; use mysql; insert ...."`
如果你想在PHP中为MySQL命令行工具编写自己的交互式替代品,那么你将需要大量的时间和坚持不懈的努力。首先阅读PHP的CLI:http://php.net/manual/en/features.commandline.php
答案 2 :(得分:0)
MySQL客户端使用readline()库,PHP也可以使用它。
PHP的PEAR命令行应用程序(在运行pear install <package>
时调用,以类似的方式处理交互式命令行输入,但不使用完整的readline库。有一些input-reading source here。关键行是{ {1}}
答案 3 :(得分:0)
您可以通过proc_open完成此操作。
$bin = 'path/to/mysql.exe';
$cmd = $bin . ' -ulocalonly';
$descriptors = array(
0 => array('pipe', 'r'),
1 => array('pipe', 'w'),
2 => array('pipe', 'r')
);
$process=proc_open($cmd, $descriptors, $pipes, dirname($bin));
if (is_resource($process)) {
// ....
}
棘手的部分是解析其他进程的输出(来自$ pipes [0]和$ pipes [2])并对所有可能的情况(包括错误处理)做出反应。您可能需要查看expect
pecl extension。