-1
votes

Clause MySQL "dans" en utilisant php / cli

J'essaie de mettre à jour les enregistrements de table à l'aide de PHP Exec avec la commande suivante:

exec("mysql --user=USER --password=PASS DB_NAME > 
      UPDATE `table` SET option_value='VALUE' where option_name in ('val1','val2')")


9 commentaires

Pourquoi sur Terre ne vous connectez pas simplement à la base de données et utilisez mysqli ou pdo pour faire la mise à jour


Utilisation de la balise PHP, mais n'utilise pas MySQLI_ *


@Riggsfolly, je ne peux pas sinon je n'étais pas là poser une question. Cela devrait être automatisé par PHP.


Création d'une connexion et d'exécution d'une requête dans PHP Script est une automatisation. L'exécution d'une requête sur DaTatBase peut être effectuée même comme un script Bash , pourquoi utiliser php alors?


Qu'est-ce qui est non automatisé à propos d'exécuter une requête simple du code CLI PHP. Vous pouvez vous connecter à une base de données de la même manière dans PHP CLI que vous le faites en PHP sur une page Web. Et c'est un F * Sit plus facile et plus prévisible que d'émettre des commandes exécutées


@Riggsfolly Je crée un autre projet à l'aide de mon projet existant basé sur l'entrée donnée par l'utilisateur. La création de la base de données, de l'utilisateur et du mot de passe est donc performante par Script PHP. Aussi, j'ai une structure dB pré-définie qui doit être importée à l'aide de PHP.


Pas sûr de quelles informations vous aviez l'intention de me conférer là-bas, mais rien dans ce que vous dites n'a pu être fait par PHP CLI Script (s) à l'aide d'une connexion à une base de données qui vous permettrait de tout cela directement au code PHP.


Cela permettrait également de traiter de bien meilleure erreur d'erreur, vous permettant de contrôler tellement plus de tout ce qui s'est passé


@Riggsfolly Je me demande également ce qui se passera lorsque l'expansion de Shell voit les tiques arrière. :)


3 Réponses :


3
votes

Vous ne devez pas utiliser ">" pour exécuter l'instruction SQL, ">" est utilisé pour écrire la sortie dans un fichier et "<" est utilisé pour lire des instructions à partir d'un fichier.

Dans votre cas, "-E" est suffisant pour exécuter le SQL, comme ci-dessous: xxx


0 commentaires

1
votes

Vous devez échapper à "(', l'erreur est lancée par Bash non par PHP. Aussi, vous pouvez aussi changer le" pour "et échapper à". Appliquez également la -e comme Vivek. XXX


0 commentaires

1
votes

Le caractère ">" signifie que vous redirigez la sortie standard au lieu d'exécuter la requête. Utilisez l'option "-e requête" à la place. Lisez la documentation de bash ( homme bash ) et mysql_cli ( mysql ) avant de continuer.


0 commentaires