Comment puis-je savoir si ma mise à jour a réussi ou non? Je mets à jour en utilisant un nom unique = nom donc je devrais toujours mettre à jour seulement 0 lignes ou 1. Qu'est-ce qu'un bon moyen de vérifier si j'ai mis à jour une ligne ou non?ligne (s) affectée (s) dans la mise à jour mysql avec PHP
Répondre
mysql_affected_rows()
retournera le nombre de lignes affectées par votre mise à jour.
http://us.php.net/manual/en/function.mysql-affected-rows.php
Utilisez mysql_affected_rows
.
Cela pourrait retourner 0 si les données mises à jour dans la requête sont les mêmes que celles déjà présentes dans la base de données, de sorte qu'il peut retourner 0 même si la requête a réussi mais que 0 lignes ont été modifiées. Mais je suppose que votre cas d'utilisation n'aura pas ce scénario. – andho
Cela peut s'appliquer, mais si vous avez écrit "$ query = mysql_query ($ sql);", alors "$ query" contiendrait un "1" s'il réussissait, "0" sinon. – NessDan
si votre requête de mise à jour est une variable nommée $ query, vous pouvez le faire;
$result = mysql_query($query);
if($result){
//succes!
} else {
//fail!
}
Espérons que cela aide. Si vous voulez juste savoir si votre requête a été exécutée avec succès, cela fonctionnera. Si vous voulez vraiment savoir combien de lignes sont affectées, utilisez les autres suggestions.
Cela retournera seulement 'false' si la requête a été malformée. Même si le 'UPDATE' fonctionne sur zéro lignes, cela affichera" succès! " – brianreavis
Cela vous indiquera seulement si la requête a été exécutée avec succès, et non le nombre de lignes affectées. –
essayez d'utiliser mysql_affected_rows([$link])
Il n'y a vraiment aucun moyen de le savoir. Supposons que la table tbl_numbers (id, value) comporte des lignes (1, "one") et (2, "two");
$result1="update tbl_numbers set value='first' where id=1";
Si vous cochez $ result1 si la clause il retourne vrai et mysql_affected_rows() retourne 1.
Cependant, pour $result2="update tbl_numbers set value='two' where id=2";
Si vous cochez result2 $ si elle renvoie l'article renvoie true et mysql_affected_rows() 0.
et, pour $result3="update tbl_numbers set value='three' where id=3";
Si vous cochez $ result3 si l'article il retourne vrai et mysql_affected_rows() retourne 0.
Ceci est utile .. Merci – hriziya
Alors, que si l'utilisateur soumet à nouveau des données qui sont déjà les mêmes que les informations dans la base de données? Si la mémoire sert à renvoyer mysql_affected_rows() avec une valeur de 0 car par définition aucune ligne n'a été mise à jour dans le processus. Pourtant, la requête elle-même a été couronnée de succès.
La solution à ce serait soit la preuve de votre contenu avant l'insertion ou à l'aide:
$result = mysql_query($q);
if(mysql_affected_rows() == 0)
$state = $result ? "Success" : "Fail";
De cette façon, vous obtenez de vérifier si les lignes ont été mises à jour et sinon vous pouvez vérifier si elle était un mauvais fonctionnement ou il suffit de répéter les données.
4 résultats possibles: dysfonctionnement, mise à jour des données, répétition des données ou clé non trouvée. Malheureusement, la vérification des erreurs ne vous aidera pas à faire la distinction entre la clé non trouvée et la répétition des données. –
Je suis assez en retard ici, mais vous pouvez toujours forcer un échec sur aucune correspondance en changeant votre requête.
Pour la table 'foo' avec les colonnes 'ID' et 'value'. Expression de correspondance: ID = 4
update foo
join (select ID as nearID,
ID = 4
as matched from foo order by matched desc limit 0, 1) as t on nearID = ID
set value='somedata2'
, ID = if(matched, nearID, 'nomatch')
Il est probablement plus facile de changer la table pour inclure soit un horodatage de mise à jour ou le numéro de séquence au lieu cependant. (puisque ceux-ci changeraient à chaque mise à jour)
mysql_affected_rows ($ link) est correct mais déprécié .. mysqli_affected_rows ($ link) devrait être utilisé maintenant.
Si vous utilisez PDO, les lignes affectées peuvent être obtenues en utilisant la fonction rowCount() comme ci-dessous:
/* Delete all rows from the FRUIT table */
$del = $dbh->prepare('DELETE FROM fruit');
$del->execute();
/* Return number of rows that were deleted */
print("Return number of rows that were deleted:\n");
$count = $del->rowCount();
print("Deleted $count rows.\n");
Si vous utilisez l'instruction préparée ..
//query
$stmt = $conn->prepare("UPDATE user SET name = 'Jack' WHERE id = ?");
//bind parameters
$stmt->bind_param("i", $id);
//execute
$stmt->execute();
//updated row count
echo $stmt->affected_rows;
echo " rows updated";
- 1. Requête PHP MySQL avec% s et% d
- 2. Quelle (s) technologie (s) et langage (s) Microsoft Navison a-t-il implémenté avec/dans?
- 3. déclaration de mise à jour Python MYSQL
- 4. question (s) concernant le (s) graphique (s) de tournoi
- 5. Nommez JQuery: connaissez-vous le (s) plugin (s) jquery (s) spécifique (s) utilisé (s) pour créer ce widget?
- 6. Recherche de mot (s) double (s) avec expressions régulières
- 7. currentTimeMillis de Java renvoie la (les) valeur (s) négative (s)
- 8. Meilleure (s) caractéristique (s) dans Visual Studio 2008 (et VSTS)?
- 9. Fichier (s) CSS et Javascript cumulé (s)
- 10. colonne Mise à jour MySQL avec déclaration
- 11. Mise à jour Ligne
- 12. À quelle (s) conférence (s) de cours dois-je participer?
- 13. Problème avec la mise à jour dans MySQL
- 14. mise à jour de la table via php mysql
- 15. Comment mettre à jour une ligne MySQL en PHP?
- 16. Redirection d'E/S dans Eclipse?
- 17. Mise à jour en masse dans MYSQL
- 18. Mise à jour de MySQL avec contenu textuel sans rechargement
- 19. Mise à jour du jeu PHP
- 20. problème avec la mise à jour un champ MySQL avec PHP
- 21. Erreur CLI C++ C3767: fonction (s) candidate (s) non accessible (s)
- 22. Quelle (s) version (s) de VSTS pour les fichiers .dbproj?
- 23. fichier E/S dans Spidermonkey
- 24. Quel (s) schéma (s) d'étiquette sont les plus efficaces?
- 25. authentification JBoss Question (s)
- 26. Aide avec la syntaxe ETD: la commande `s
- 27. Meilleur (s) outil (s) pour décompiler Lua bytecode?
- 28. Langue (s) appropriée (s) pour les simulations en modélisation?
- 29. Comment détecter si le (s) filtre (s) a (ont) été modifié (s) sur une feuille de calcul?
- 30. Quelle (s) collection (s) pour stocker des groupes d'utilisateurs?
Mais il renvoie 0 en cas de succès et vous placez les mêmes données que dans la table. – madlopt