Je cherche un moyen de créer une sorte de fonction dans php et mysql qui me donne comme résultat l'identifiant d'un enregistrement dans un tableau simple.Interaction PHP-MySQL très rapide
J'ai une table id -> value où l'id est un champ auto-incrémenté.
La façon naturelle ou la manière simple je sais est:
$myId = Check('Cheese');
function Check($value) {
$sql = "SELECT id FROM table WHERE value = '$value'");
$res = mysql_query($sql);
if ($res)
return mysql_result($res,0);
// If the record doesn't exist then continue to insert the record
$sql = "INSERT INTO table (value) values ('$value')";
$res = mysql_query($sql);
return mysql_insert_id();
}
Ok, je pense que c'est la façon classique .. mais je pense qu'il doit y avoir une commande MySQL ou quelque chose qui font les choses plus simples.
Je sais qu'il existe un INSERT IGNORE mais existe-t-il un moyen de faire le select uniquement s'il n'existe pas et de retourner l'ID?
Je veux faire quelque chose comme:
Select de la table où la valeur = 'factice' sinon existe alors Insérer dans la table des valeurs ('factice')
(valeur) donc i « ll obtenir l'ID en une seule étape et MySQL va résoudre le problème et le code sera plus efficace ou rapide ..
(imaginez que je suis arrivé ce faire 10000 fois)
Cette fonctionnalité existe également dans 5.0, http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html, et nécessite une clé unique sur la colonne 'value'. – ceteras
Ok Juste pour moi Merci c'est vrai que j'ai besoin de définir l'index unique sur la chaîne mais ça marche – diego2k