$ stmt->execute(): Comment savoir si db insert a réussi?
avec le morceau de code suivant, Comment puis-je savoir que quelque chose a été inséré dans le db?
if ($stmt = $connection->prepare("insert into table (blah) values (?)")) {
$stmt->bind_param("s", $blah);
$stmt->execute();
$stmt->close();
}
je pensais que l'ajout de la ligne suivante aurait fonctionné mais apparemment pas.
if($stmt->affected_rows==-1){$updateAdded="N"; echo "failed";}
et puis utilisez le $updatedaded= " N " pour ensuite sauter d'autres morceaux de code plus loin dans la page qui dépendent de la réussite de l'insertion ci-dessus.
des idées?
5 réponses
cochez la valeur de retour de $stmt - > execute ()
if(!$stmt->execute()) echo $stmt->error;
Remarque: cette ligne de code ne effectuer le execute() de la commande afin de l'utiliser à la place de votre niveau actuel de $stmt->execute () (et non après.
il suffit de vérifier les pages de manuel quelle que soit la fonction que vous utilisez:
prepare () - renvoie un objet statement ou FALSE si une erreur s'est produite.
bind_param () - retourne TRUE sur la réussite ou FALSE sur l'échec.
execute () - renvoie TRUE sur la réussite ou FALSE sur l'échec.
close () - retourne TRUE sur le succès ou FALSE sur l'échec.
si vous voulez dire que vous voulez connaître le nombre de lignes affectées, vous pouvez utiliser rowCount sur le pdo déclaration
$stmt->rowCount();
après exécution;
si vous parlez de la gestion des erreurs, je pense que la meilleure option est de définir le mode errmode pour lancer des exteptions et envelopper tout dans un bloc "essayer/attraper"
try
{
//----
}
catch(PDOException $e)
{
echo $e->getMessage();
}
Autre manière:
if ($stmt->error){
echo "Error";
}
else{
echo "Ok";
}