2008-11-07 3 views
4

J'ai un programme de ligne de commande PHP en cours d'exécution. Et je veux me connecter à un shell mysql directement à partir de PHP. J'ai déjà fait ça en Python en utilisant os.execvp Mais je ne peux pas obtenir la même chose en PHP.L'équivalent os.execvp de Python pour PHP

J'ai essayé les fonctions suivantes:

  • système
  • passthru
  • exec
  • shell_exec

exemple:

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

Mais ils semblent tous attendre que mysql sorte et retourne quelque chose. Ce que je veux vraiment, c'est que PHP lance le shell mysql et qu'il le quitte lui-même. des idées?

Répondre

3

Si vous voulez des commandes shell pour être interactif, utilisez:

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

qui fonctionnera pour la plupart des cas, mais cassera si vous n'êtes pas dans un terminal.

+0

Brillant! Ceci est exactement ce que je cherchais! – Mattias

0

Donnez MySQL un script à exécuter qui est séparé du script PHP:

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

En plus de ce que acrosman dit, vous pouvez également utiliser le commutateur -e pour passer SQL à partir de la ligne de commande.

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

En outre, j'espère que vous ne vous connectez pas réellement à la base de données en tant que root à partir d'une application PHP.

+0

Merci pour le conseil mais ce n'est pas ce que je cherche. Je veux déplacer l'utilisateur du PHP cli dans un shell mysql. – Mattias