Problème insert into

Fermé
Gonzalo_Gonzalo - 4 mars 2014 à 14:40
 Utilisateur anonyme - 4 mars 2014 à 15:11
Pardonnez-moi, mais je nage...

Je travaille sur l'interface d'un site en php mysql. Pour ajouter des données à l'une des tables ma base, j'ai conçu un formulaire spécifique, et une page exécutant une requête d'insertion. Il s'agit, à chaque fois, d'ajouter une seule ligne.

Sur la page d'insertion, je récupère les données envoyées par le formulaires et je renomme mes variables ainsi :

$img=$_POST['img']; 
$type=$_POST['type']; 
$larg=$_POST['haut']; 
$haut=$_POST['larg'];

Les variables type, haut et larg ne contiennent que des chiffres ; la variable img contient une chaine de caractères (lettres et chiffres), sans autre ponctuation qu'un underscore, sous la forme suivante : bmp_d3463_0337_image_41

La récupération des variables depuis le formulaire marche sans problème ; je m'en suis assuré en affichant (avec un echo) toutes ces variables. Il n'y a pas de problème.

Pour la requête d'insertion elle même, j'ai développé le code suivant :

$bdd->exec("INSERT INTO t_bois(Numimg,Type_Ornement,largeur,hauteur) VALUES ('$img','$type','$larg','$haut')");



Sur ma machine, sous wamp, ça marche sans problème. Mais une fois sur le "vrai" serveur (en ligne), la requête ne fonctionne plus. Je n'ai aucun message d'erreur ni rien, mais aucune ligne n'est ajoutée à ma table.

Je me suis dit que les variables devaient perturber la requête, donc j'ai opté pour une requête préparée avec un array (même si je ne cherche à ajouter qu'une seule ligne à ma table) :
$creation = $bdd->prepare("INSERT INTO t_bois(Numimg, Type_Ornement, largeur, hauteur) VALUES (:img, :type, :largeur, :hauteur)");
$creation->execute(array(
                      'img' => $img,
                      'type' => $type,
                      'largeur' => $larg,
                      'hauteur' => $haut
                      ));


Là encore, sur ma machine sous wamp, ça marche. Mais sur le serveur, ça ne marche pas.

Et ne comprends pas pourquoi.

Quelqu'un a une idée?

Merci

1 réponse

Utilisateur anonyme
4 mars 2014 à 15:11
Bonjour

Tes requêtes ont bien l'air correctes dans les deux cas en effet.

Je vois deux choses qui peuvent justifier une différence entre le comportement en local et chez l'hébergeur : La connexion et la sensibilité à la casse.
Pour la connexion, je suppose que tu fais bien attention, chez l'hébergeur, d'utiliser les identifiants qu'il t'a donnés. Et que tu ne confonds pas le mot de passe d'accès à mysql avec celui d'accès à phpmyadmin (ils peuvent être différents).
Pour la sensibilité à la casse (majuscules/minuscules), il faut savoir que les noms de bases de données et de tables sont liés au système de fichiers : sous Windows, peu importe que tu appelles ta table t_bois ou t_Bois, mais sur un hébergement linux, ça ne va pas marcher.
1