Insert et update PHP [Résolu]

Messages postés
2
Date d'inscription
jeudi 15 février 2007
Statut
Membre
Dernière intervention
19 août 2010
- - Dernière réponse : cs_killersources
Messages postés
2
Date d'inscription
jeudi 15 février 2007
Statut
Membre
Dernière intervention
19 août 2010
- 19 août 2010 à 17:16
Bonjour,

Voilà j'ai un petit soucis, j'aimerais pouvoir faire un nouvel enregistrement dans une table et en même temps un update d'une autre table.
Séparement ça fonctionne bien, mais comme ça y en a que une des requêtes qui s'effectue.
Quelqu'un peut-il m'éclairer?

Merci pour votre aide

<?php

if (empty($_REQUEST['numrapport']) || empty($_REQUEST['client']) || empty($_REQUEST['date']) || empty($_REQUEST['quantite']) || empty($_REQUEST['refri']) || empty($_REQUEST['bouteille']) )
die ("ERREUR : Veuillez remplir tous les champs ");

$liendb = mysql_connect ("localhost", "", "");
mysql_select_db ("amisprl");
mysql_query("SET NAMES UTF8");

$sql = "INSERT INTO freon (numrapport, client, date, quantite, refri, bouteille) VALUES ('" .
addslashes ($_REQUEST['numrapport']) ."', '".
addslashes ($_REQUEST['client']) ."', '".
addslashes ($_REQUEST['date']) ."', '".
addslashes ($_REQUEST['quantite']) ."', '".
addslashes ($_REQUEST['refri']) ."', '".
addslashes ($_REQUEST['bouteille']) ."')";

$sql "UPDATE bouteilles SET quantite quantite - ".$_POST['quantite']."
WHERE numserie = '".$_REQUEST['bouteille']."'";

if (mysql_query ($sql) !=false)
print ("Rapport ".$_REQUEST ['type']." enregistré.");
else
print ("Echec lors de la création de la fiche.");

mysql_close($liendb);
html_entity_decode($name)
?>
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
9
3
Merci
Salut,

Deux raisons pour laquelle tu n'en exécute qu'une seule :
1. Lorsque tu assigne la seconde requête à la variables $sql, tu écrase la première. Afin d'éviter ça il te faut utiliser la concaténation. A noter qu'on sépare les différentes requêtes pour un point-virgule.
2. Même si ta variable contenais les deux requêtes, mysql_query() envoie une seule requête. Il faut prendre ça comme une sécurisation qui permet de limiter les ravages causés par une injection SQL (un SELECT restera un SELECT, impossible de le finir avec le point virgule et d'ajouter des requêtes DROP, INSERT, DELETE, UPDATE etc à la suite).

Soit dit en passant, ton code est vulnérable aux injections SQL, tu devrais corriger ceci au plus vite.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Commenter la réponse de TychoBrahe
Messages postés
2
Date d'inscription
jeudi 15 février 2007
Statut
Membre
Dernière intervention
19 août 2010
0
Merci
Merci pour ta réponse, ça fonctionne.

Encore merci
Commenter la réponse de cs_killersources