web-dev-qa-db-fra.com

besoin de tester si la requête SQL a réussi

J'ai cette requête et si elle retourne avec succès, je veux une autre fonction à traiter, sinon, ne traite pas cette fonction.

Voici le code pour exécuter la requête

global $DB;
$DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'");

J'imagine que c'est quelque chose comme ...

if($DB) { 
    //success 
} else { 
    //failure 
}
15
Brad

C'est la façon la plus simple de tester

$query = $DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'");

if($query) // will return true if succefull else it will return false
{
// code here
}
25
streetparade

mysql_affected_rows

Je comprends qu’en disant "réussie", vous voulez savoir si des lignes ont été mises à jour. Vous pouvez le vérifier avec cette fonction.

Si vous utilisez PDO -> http://www.php.net/manual/fr/pdostatement.rowcount.php

8
kjagiello
if ($DB->rowCount() > 0)
   {/* Update worked because query affected X amount of rows. */}
else
    {$error = $DB->errorInfo();}
3
Cian E
global $DB;
$status = $DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'");

if($status == false)
{ 
    die("Didn't Update"); 
}

Si vous utilisez mysql_query dans le backend (quel que soit $DB->query() utilisé pour interroger la base de données), une commande TRUE ou FALSE pour INSERT, UPDATE et DELETE (et quelques autres) sera retournée, en fonction de leur statut.

2
Tyler Carter

si la valeur est 0, cela n'a pas abouti, mais si 1 a réussi.

$this->db->affected_rows();
2
tucker
if ($DB->query(...)) { success }
else { failure }

query devrait retourner false en cas d'échec (si vous utilisez mysql_query ou $ mysqli-> query). Si vous voulez vérifier si la requête UPDATE a réellement fait quelque chose (ce qui est totalement différent de "succès"), utilisez donc mysql_affected_rows ou $ mysqli-> affects_rows

0
Tor Valamo

Ceci s’est révélé le mécanisme le plus sûr pour moi de tester l’échec lors de l’insertion ou de la mise à jour:

$result = $db->query(' ... ');
if ((gettype($result) == "object" && $result->num_rows == 0) || !$result) {
   failure 
}
0
Jack Briner

si vous n'utilisez pas le format ->, vous pouvez procéder comme suit:

$a = "SQL command...";
if ($b = mysqli_query($con,$a)) {
  // results was successful
} else {
  // result was not successful
}
0
Brian Powell