[Résolu] Insérer un valeur négative dans mySQl

Vous avez un soucis de développement et ce n'est pas du ressort de notre support ? N'hésitez pas à soumettre vos petits soucis de développement et à vous entre aider par la même occasion.
Répondre
Philippe40
Messages : 32
Enregistré le : 21 octobre 2012 à 18:54

Bonsoir,
J'ai une requête qui envoie les données suivantes dans une page PHP

array (
'id' => '160',
'code_article' => '3660603004927',
'product_name' => 'Bénédicta Sauce au bleu le pot de 260 g',
'createdon' => '2020-09-11',
'qt' => '1',
'pa' => '2.74',
'longitide' => '-1.2560526',
'latitude' => '44.0785292',
'id_magasin' => '2',
'utilisateur' => '82942d7411af0066',
)

Le champ longitude est négatif mais s'enregistre à zéro dans la base de données

Dans ma page PHP

$dbh = new PDO('mysql:host='.$host.';dbname='.$base, $user, $pass);
\t\t\t\t
$sql = "INSERT INTO wp3_achats (id,code_article, product_name,createdon,qt,pa,longitude,latitude,id_magasin,utilisateur)
\t\t\t\t VALUES
\t\t\t\t\t\t (
\t\t\t\t\t\t '$_POST[id]' ,
\t\t\t\t\t\t '$_POST[code_article]' ,
\t\t\t\t\t\t '$_POST[product_name]' ,
\t\t\t\t\t\t '$_POST[createdon]' ,
\t\t\t\t\t '$_POST[qt]' ,
\t\t\t\t\t\t '$_POST[pa]' ,
\t\t\t\t\t\t '$_POST[longiture]' ,
\t\t\t\t\t\t '$_POST[latitude]' ,
\t\t\t\t\t\t '$_POST[id_magasin]' ,
\t\t\t\t\t\t '$_POST[utilisateur]'
\t\t\t\t\t\t )";

Le type de champ dans ma base de données est double(10,4)

Mes recherche sur internet sont restées infructueuses

Avez vous une solution pour ce problème
Merci d'avance
Cordialement
Philippe
Avatar du membre
Elodie
Messages : 7762
Enregistré le : 2 avril 2010 à 20:14

Bonsoir,

Avant de se plonger dans votre questionnement, je dois vous faire remarquer quelque chose de TRES important.

Vous utilisez du POST directement dans la requête SQL sans la préparer avec PDO, du coup n'importe qui peut envoyer une sous requête SQL pour lancer ce qu'il veut sur toutes vos données SQL et même supprimer toutes vos données dans vos bases de données en quelques secondes. C'est ce que l'on nomme de l'injection SQL.

Ensuite, si la valeur de la longitude est à 0, c'est peut être parce que vous ne la renseignez pas et du coup elle est à 0 comme c'est un nombre. Vous avez mis un "R" au lieu de la lettre "D" dans le nom de la variable "longituRe" :
philippe40 a écrit :'$_POST[longiture]
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Philippe40
Messages : 32
Enregistré le : 21 octobre 2012 à 18:54

Encore une fois merci de votre aide.
Je n'avais pas vu la faute et je tournais en rond.
Je vais tenir compte de votre avis sur la protection des injections
cordialement
Philippe
Répondre