0
votes

Script PHP pour mettre à jour plusieurs colonnes dans une table MySQL

Je dois mettre à jour plusieurs colonnes dans une seule table dans une seule base de données. À l'heure actuelle, lorsque j'exécute mon script PHP, il ne remplit que la première commande de mise à jour, elle ne met pas à jour les entrées qui lui suivent. Je ne sais pas ce qui ne va pas avec cela: xxx

Lorsque je l'exécute à partir de la ligne de commande, il n'éteigne pas la première mise à jour. Lorsque je vais vérifier sur la base de données, il a en fait mis à jour le "Team_id" à "15" dans la colonne "Topic_id" qui a l'ID de "10", mais les deux autres colonnes ne sont pas mises à jour. Pourquoi est-ce?


4 commentaires

Vous devez appeler mysql_query une fois pour chaque relevé SQL. Vous écrasez actuellement les déclarations les unes avec les autres, alors seul le dernier est en fait envoyé à la DB (pas le premier)


Ce n'est pas plusieurs colonnes, c'est plusieurs rangées.


Pourquoi ne pas utiliser où topic_id in (10, 17, 22) pour les faire tous dans une requête?


Remarque: l'interface orientée objet vers mysqli est significativement moins verbeuse, ce qui facilite la lecture et la vérification, et n'est pas facilement confondu avec l'interface obsolète MySQL_Query . Avant de vous rendre trop investi dans le style de procédure, il convient de passer à autre chose. Exemple: db = nouveau mysqli (...) et $ db-> préparer ("...") L'interface procédurale est un artefact de l'ère PHP 4 lorsque MySQLI API a été introduit et ne doit pas être utilisé dans le nouveau code.


3 Réponses :


1
votes

Vous devez exécuter toutes les lignes: xxx pré>

ou créer un tableau p> xxx pré>

et foreach: p>

foreach ($arra as $sql) {

   if (mysqli_query($conn, $sql)) {
            echo "Record updated successfully";
    } else {
            echo "Error updating record: " . mysqli_error($conn);
    }
}


0 commentaires

3
votes

Vous définissez la même variable encore et encore, piétinant la version précédente. Seule la dernière définition "colle" et est exécutée.

Soit être basculer vers un tableau: xxx

ou utilisez le dans (...) Approche: xxx

où une requête peut mettre à jour plusieurs valeurs à la même chose .


2 commentaires

Merci! Je n'étais pas au courant du commandement. Extrêmement utile.


Techniquement, ce serait appelé une "clause" dans le cadre d'une "situation où l'état". Une "commande" est quelque chose comme sélectionner ou insérer , généralement le premier mot de l'instruction SQL. Cela peut sembler une distinction académique, mais la terminologie correcte contribue à mieux expliquer vos besoins, ainsi que ce que vous avez fait à d'autres.



0
votes

Utiliser simplement un "opérateur" ou "ou" le corrigera!

$sql = "UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10 OR topic_id=12 OR topic_id=13"


0 commentaires