Bonjour,
Je travaille avec php et j'essaie de réduire le nombre de requetes sql de mon site web.
Est-il possible de faire un INSERT INTO avec une condition ???
Donc ne faire l'insert que si une valeur de cette même table n'est pas trouvé (si pas de doublons sur la clé unique)
Donc je voudrais réduite le code suivant et l'optimiser :
N'y a t il pas moyen de faire une seule requete avec le select et l'insert voire même l'update tout dans la même requete.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 $query = "SELECT * FROM ptpip WHERE ip='$ip'"; $result = mysql_query($query, $connection) or die('error making query'); $affected_rows = mysql_num_rows($result); if ($affected_rows==0) { $query5="INSERT INTO ptpip VALUES ('$ip',CURDATE())"; $result5 = mysql_query($query5, $connection) or die('error making query'); $iptrouve=0; } else { $query5="update ptpip set date=CURDATE() where ip='$ip' and date!=CURDATE()"; $result5 = mysql_query($query5, $connection) or die('error making query'); $affected_rows5=mysql_affected_rows(); if ($affected_rows5!=0) { $iptrouve=0; } }
Celà ferait moins d'accès à la base de données.
De plus avec ce code j'ai mis l'IP en clé unique et il s'avère que lors du passage de l'IP en clé unique mysql m'a indiqué que j'avais des doublons sur l'ip ce qui est théoriquement impossible avec le code ci-dessus puisque le select s'assure justement que l'insert ne soit pas fait si select ne retourne rien.
Partager