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: 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? P> p>
3 Réponses :
Vous devez exécuter toutes les lignes: ou créer un tableau p> et foreach: p> foreach ($arra as $sql) {
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
}
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: p> ou utilisez le où une requête peut mettre à jour plusieurs valeurs à la même chose em>. p> p> p> dans (...) code > Approche: p>
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 code> ou
insérer code>, 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.
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"
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) code> pour les faire tous dans une requête?
Remarque: l'interface orientée objet vers
mysqli code> 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 CODE>. Avant de vous rendre trop investi dans le style de procédure, il convient de passer à autre chose. Exemple:
db = nouveau mysqli (...) code> et
$ db-> préparer ("...") code> L'interface procédurale est un artefact de l'ère PHP 4 lorsque
MySQLI code> API a été introduit et ne doit pas être utilisé dans le nouveau code.