Insert et update PHP

Résolu
cs_killersources Messages postés 2 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 19 août 2010 - 15 août 2010 à 18:47
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)
?>

2 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
16 août 2010 à 11:26
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.
3
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
Merci pour ta réponse, ça fonctionne.

Encore merci
0
Rejoignez-nous