J'ai une instruction MySQL DELETE
suivie d'une instruction INSERT
pour assurer une seule copie d'un ensemble de données pour un ID donné. (Il y a une raison pour laquelle je n'utilise pas UPDATE)MySQL DELETE échoue aléatoirement et très rarement
Le problème est que j'ai remarqué dans un ensemble de données couvrant plus de 5000 entrées qu'il y a 3 instances où l'instruction DELETE ne s'est pas exécutée, mais l'instruction INSERT l'a fait. Le résultat final était des entrées en double pour les ID donnés.
Voici mon code. Lors de l'échec de l'exécution, le script PHP quittera avec un message d'erreur. Ça doit être mon niveau d'expérience. Des idées quel pourrait être le problème?
//delete
$query_delete = "DELETE FROM q1_6_list WHERE q_id = '".mysql_real_escape_string($q[qID])."'";
$result = mysql_query($query_delete) or errorReport("Error in query: $query_delete. ".mysql_error());
//insert
$query_insert = "INSERT INTO q1_6_list (q_id, vehicle, quantity) VALUES";
$result = mysql_query($query_insert) or errorReport("Error in query: $query_insert. ".mysql_error());
if (!$result)
errorReport($result);
EDIT
regardant de plus près, j'ai remarqué que je ne l'ai pas ajouter le code ci-dessous juste après $result = mysql_query($query_delete)....
if (!$result)
errorReport($result);
pourrait-il être aussi nécessaire pour attraper tous les autres messages d'erreur, ou mysql_query($query_delete) or errorReport...
attraper toutes les occurrences d'erreur?
bug mineur: '$ q [qid]' devrait être '$ q [ 'qid'] '. cela peut exploser spectaculairement sur votre si vous avez réellement une constante nommée 'qID' - php traitera les constantes non définies comme une chaîne sans guillemets dans le contexte de la clé du tableau, mais si la constante existe ... boom. De plus, quel est exactement le message d'erreur? Ne nous laissez pas pendre ... –
@MarcB J'aimerais que ce soit 'E_ERROR' au lieu de' E_NOTICE'. –
En fait, il n'y a aucun message d'erreur que je pourrais tracer. Il est renvoyé à l'application des utilisateurs. Je ne vois rien non plus dans error_log.txt pour cette ligne de code. – Rynardt