PHP中相当于Python os.execvp的实现
我有一个在命令行上运行的PHP程序。我想直接从PHP连接到mysql的命令行界面。我之前在Python中用过os.execvp来实现这个,但在PHP中却没能做到。
我尝试了以下几种函数:
- system
- passthru
- exec
- shell_exec
举个例子:
system('mysql -u root -pxxxx db_name');
但是这些函数似乎都在等mysql退出并返回一些东西。我真正想要的是让PHP启动mysql的命令行,然后自己退出。有没有什么好主意?
3 个回答
0
除了acrosman提到的内容,你还可以使用-e
这个选项,从命令行直接传递SQL语句。
$sql = ".....";
system("mysql -u root -pxxxx db_name -e \"$sql\"");
另外,我希望你在PHP应用程序中并不是以root用户的身份连接数据库。
0
给MySQL一个单独运行的脚本,而不是和PHP脚本放在一起:
system('mysql -u root -pxxxx db_name < script.mysql');
3
如果你想让命令行的指令可以互动,就可以使用:
system("mysql -uroot -p db_name > `tty`");
这样做在大多数情况下都能正常工作,但如果你不在终端里,这个方法就会失效。