has_selected_record: action déterminé en fonction du résultat renvoyé par un SELECT
Bonjour,
J'ai une table, avec une colonne 'Nom', je voudrais faire un programme qui ajoute un nouveau nom si celui-ci est absent ou bien met à jour la ligne si celui-ci est déjà présent.
j'utilise pour cela la fonction has_selected_record() du modul Net::Mysql
décrite comme ceci:
"has_selected_record()
TRUE will be returned if it has a reference result by SELECT."
et cela ne fonctionne pas dans le cas FALSE!
Voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
use Net::MySQL;
$mysql->query(qq{SELECT Nom FROM personnes WHERE Nom='$name'});
if ($mysql->has_selected_record)
{
$mysql->query(qq{
UPDATE personnes SET Adresse='$adresse',telephone='$phone'
WHERE Nom='$name'
});
}
else
{
$mysql->query(qq{
INSERT INTO personnes (id, Nom, Prenom, Adresse, telephone)
VALUES (DEFAULT,'$name','$prenom','$adresse','$phone')
});
} |
Le problème c'est que la fonction n'exécute jamais la clause else, c'est incompréhensible alors que vérifie la présence d'un nom inconnu. J'ai une autre solution qui consisterait à comparer chaque nom mais cela ralentirait trop le processus (plus de 5000 noms).
Quelqu'un a -t-il déjà rencontré ce problème?:(