IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

page include contenant une requete -> Erreur [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut page include contenant une requete -> Erreur
    Bonjour

    J ai quelque peu modifié l architecture de mon site pour inclure les pages en fonction d une variable de l url
    mon url devient donc monsite.com/index.php?page_id=123

    Dans mon index j inclus une page en fonction de cet id dans un switch

    La page est apellee correctement et la requete qui permet d afficher le contenu de la bdd dans un form fonctionne parfaitement

    Dans ce form je passe mes variables en POST à $_SERVER['REQUEST_URI'].

    Une fois le form validé, la page appellee est la bonne et les variables sont bien presentes dans mon tabaleau POST.

    Mais la requete declenche systematiquement une exception :
    Call to a member function bind_param() on a non-object in
    Avant que je ne change l architecture, tout fonctionnait correctement avec les meme requetes...

    Si j ecris ma requete en 'dur' c est le message d erreur suivant qui s affiche :
    Call to a member function execute() on a non-object in

    Merci de m eclairer de vos lumieres !

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $sql='UPDATE sellers SET civilite = ?, nom = ?,prenom = ?, tel = ?,  adresse = ?, cp = ?, ville = ?,etat = ?,pays = ?,lat= ?,lng= ? WHERE ID ='.$_SESSION['ID'];
    $stmt = $db->prepare($sql);
    $stmt->bind_param('sssssssssdd',
        $_POST['civilite'],
        $_POST['nom'],
        $_POST['prenom'],
        $_POST['TELEPHONE'],
        $_POST['adresse'],
        $_POST['CP'],
        $_POST['VILLE'],
        $_POST['ETAT'],
        $_POST['PAYS'],$latitude,$longitude);
    $stmt->execute(); 
    $stmt->close();
    Merci de votre aide

    stéphane

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Active l'affichage des erreurs PDO : si $stmt n'est pas un objet c'est que la préparation n'a pas fonctionné, donc tu dois avoir une erreur PDO.
    Vérifie $_SESSION['ID'] au passage.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Merci

    Session ID est ok, c est grace à lui que je peux executer la requete qui affiche correctement les infos dans le form

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Pour activer les erreurs pdo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
    $user = 'dbuser';
    $password = 'dbpass';
     
    try {
        $dbh = new PDO($dsn, $user, $password);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        echo 'Échec lors de la connexion : ' . $e->getMessage();
    }
    Peut-être ne reconnait-il pas ton $db (objet PDO) car tu as changé de page ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Pas d erreur PDO

    Mon id est bien reconnu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if ($_SESSION['ID'])
    {
    $db=mysqli_connect($sql_host, $sql_login, $sql_pass);
    mysqli_select_db($db,$sql_database);
     
    if ($db)			 
    {
    // le code precedent
     
    mysqli_close($db);
    }
    merci

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Normal que tu n'aies pas d'erreur PDO si tu es utilises mysqli

    Un petit plutôt
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Toujours pas d erreur

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Enfin bon c'est le genre de debugage que tu peux faire tout seul hein ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql='UPDATE sellers SET civilite = ?, nom = ?,prenom = ?, tel = ?,  adresse = ?, cp = ?, ville = ?,etat = ?,pays = ?,lat= ?,lng= ? WHERE ID ='.$_SESSION['ID'];
    var_dump($db);
    $stmt = $db->prepare($sql);
    var_dump($stmt);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Je viens de rallumer le pc et Ô miracle, cela fonctionne


    J ai malgré tout testé ton code, resultat :
    var_dump($db);
    object(mysqli)#1 (19) { ["affected_rows"]=> int(0) ["client_info"]=> string(79) "mysqlnd 5.0.11-dev - 20120503 - $Id: 1514feb3700aa52d513182fcdc87f2c66f06d152 $" ["client_version"]=> int(50011) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["field_count"]=> int(0) ["host_info"]=> string(20) "127.0.0.1 via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(10) "5.6.15-log" ["server_version"]=> int(50615) ["stat"]=> string(136) "Uptime: 12266 Threads: 1 Questions: 1997 Slow queries: 0 Opens: 118 Flush tables: 1 Open tables: 64 Queries per second avg: 0.162" ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(587) ["warning_count"]=> int(0) }


    var_dump($stmt);
    object(mysqli_stmt)#2 (10) { ["affected_rows"]=> int(0) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(11) ["field_count"]=> int(0) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) }
    pourrais tu m expliquer ou me filer le lien qui permet de comprendre à quoi corrspondent ces valeurs int(0)

    merci pour votre aide à tous

    stephane

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Determiner le prochain ID par une procedure stockée contenant une requete CTE
    Par Alexandre le Grand dans le forum Développement
    Réponses: 4
    Dernier message: 26/05/2012, 00h49
  2. Variables d'une page php contenant des include
    Par MelkInarian dans le forum Langage
    Réponses: 7
    Dernier message: 24/10/2011, 10h23
  3. [AC-2003] une expression valide dans une requete retourne #Erreur
    Par mamadouabd dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/10/2009, 19h46
  4. Réponses: 1
    Dernier message: 18/06/2009, 14h49
  5. Réponses: 1
    Dernier message: 07/06/2007, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo