Pregunta

Tengo un programa de línea de comando PHP ejecutándose. Y quiero conectarme a un shell mysql directamente desde PHP. He hecho esto antes en Python usando os.execvp Pero no puedo hacer que lo mismo funcione en PHP.

He probado las siguientes funciones:

  • sistema
  • passthru
  • ejecutivo
  • shell_exec

ejemplo:

system('mysql -u root -pxxxx db_name');

Pero todos parecen esperar a que mysql salga y devuelva algo. Lo que realmente quiero es que PHP lance el shell mysql y luego lo salga solo. alguna idea?

¿Fue útil?

Solución

Si desea que los comandos de shell sean interactivos, use:

system("mysql -uroot -p db_name > `tty`");

Eso funcionará para la mayoría de los casos, pero se romperá si no estás en una terminal.

Otros consejos

Proporcione a MySQL un script para ejecutar que esté separado del script PHP:

system('mysql -u root -pxxxx db_name < script.mysql');

Además de lo que dijo acrosman, también puede usar el interruptor -e para pasar SQL desde la línea de comandos.

$sql = ".....";
system("mysql -u root -pxxxx db_name -e \"$sql\"");

Además, espero que realmente no se conecte a la base de datos como root desde una aplicación PHP.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top