[php] recup variable utilisable dans mysql

B4lth -  
vindicien Messages postés 136 Statut Membre -
Bonjour a tous, mon code est le suivant:

mysqli_query($link, "INSERT INTO choix_textile VALUES ('.$Id_commande.','.$Id_textile.','.$quantite_teeshirt.','N')") or die(mysqli_error($link));

ce qui me retourne l'erreur suivante:
"Catchable fatal error: Object of class mysqli_result could not be converted to string in..."

je pense que l'erreur vient du fait que les variables id_commande,id_textile,quantite_teeshirt ne sont pas converties du fait des simples quotes. D'ou le résultat inutilisable, j'ai donc utilisé mysqli_real_escape_string() d'ou le code suivant:

$req_choix="INSERT INTO choix_textile VALUES
('".mysqli_real_escape_string($link, $Id_commande)."',
'".mysqli_real_escape_string($link,$Id_textile)."',
'".mysqli_real_escape_string($link,$quantite_teeshirt)."','N')";
mysqli_query($link, $req_choix) or die(mysqli_error($link));


qui revoit cette erreur:
"Warning: mysqli_real_escape_string() expects parameter 2 to be string, object given in..."

cependant dans le code mysqli_real_escape_string contient bien les 2 arguments...

Je ne voit vraiment pas d'ou vient l'erreur, avez vous une idée svp?

3 réponses

  1. vindicien Messages postés 136 Statut Membre 33
     
    Salut,

    Si $Id_commande et $Id_textile sont des integers et que les champs de ta base sont également des integers logiquement tu n'as pas besoin de les mettre entre quotes...

    $req_choix="INSERT INTO choix_textile VALUES
    (".$Id_commande.",".$Id_textile.",".$quantite_teeshirt.",'N')";

    Ca devrait fonctionner si les 3 variables sont bien des int (en php et dans ta base)

    Vind
    0
  2. B4lth
     
    Merci de ta réponse qui résoud en partie le problème, maintenant j'ai l'erreur suivante:

    "Unknown column 'tee' in 'where clause'"

    Ce qui indique que il ne connait pas la colonne 'tee' dans un WHERE, ok
    avec un print j'ai vérifié le contenu de $type_textile=tee-shirt... Ou est le problème?

    De plus avec les print je me suis aperçu que les 2 codes suivant ne renvoient aucune valeure==> $Id_commande et $Id_textile sont vides...?????

    $Id_commande = mysqli_query($link, "SELECT MAX(Id_commande) FROM commandes") or die(mysqli_error($link));


    et

    $Id_textile=mysqli_query($link, "SELECT Id_textile FROM stock_textile WHERE type_textile=".$type_textile." AND Taille=".$taille_textile."") or die(mysqli_error($link));


    éclairez moi svp!
    0
  3. vindicien Messages postés 136 Statut Membre 33
     
    Désolé pour le retard...

    Dans ton where il ne doit pas y avoir de quote autour du nom de ton champ. Par exemple :
    " select * from truc where tee='bleu'"

    sinon pour $type_textile il te faut des guillemets car String :
    $type_textile= "tee-shirt"

    Et

    $Id_textile=mysqli_query($link, "SELECT Id_textile FROM stock_textile WHERE type_textile=".$type_textile." AND Taille=".$taille_textile."") or die(mysqli_error($link));

    ne fonctionnera que si $type_textile et $taille_textile sont des entiers (en base et dans ton code). C'est le cas ?
    Si ce ne sont pas des entiers :

    $Id_textile=mysqli_query($link, "SELECT Id_textile FROM stock_textile WHERE type_textile='".$type_textile."' AND Taille='".$taille_textile."'") or die(mysqli_error($link));
    0