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

Langage PHP Discussion :

Passage à PHP5


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Passage à PHP5
    Bonjour,
    Je suis en train de passer mon site ne php 5, et voilà que je bute sur la base : exécuter une requête.
    Ca marche sur certaines pages php mais pas d'autres, je n'y comprends rien.
    Pour etre sur que mon erreur vient de là, j'ai isolé le code sur une page test, et je suis toujours bloquée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $mysqli = new mysqli("localhost", "login", "motdepasse", "bdd");
     
    if ($mysqli->connect_errno) {
    	printf("Echec de la connexion : %s\n", $mysqli->connect_error);
    } else {
    	printf ("Connexion ok");
    }
     
    $sql = 'SELECT * FROM contrats WHERE type="C" ORDER BY datedeb DESC';
    echo $sql;
    $ret=$mysqli_query($sql); 
    echo "ret=".$ret;
    ?>
    Mon dernier affichage sur la page est celui de la requête $sql.
    Je n'ai pas d'affichage du $ret.

    Ma requête est correcte, elle passe bien sous MySQL

    Pouvez-vous m'aider svp ?

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    C'est mysqli qui te pose problème, pas php5.

    C'est soit en procédural : mysqli_query
    soit en objet : $mysqli->query

  3. #3
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ret=mysqli_query( $mysqli, $sql );

  4. #4
    Invité
    Invité(e)
    Par défaut
    alors j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ret=$mysqli_query($sql);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ret=$mysqli->query($sql);
    mais ça ne fonctionne toujours pas

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par Cyann31 Voir le message
    mais ça ne fonctionne toujours pas
    C'est à dire ? A la place de echo $ret écris : var_dump($ret);

    Cela donne quoi exactement ?

  6. #6
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    En procédural, ce n'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ret=$mysqli_query($sql);
    mais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ret=mysqli_query( $mysqli, $sql );

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Oui mais non, tu vois bien que le code est en mode objet.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Ca ne fonctionne pas c'est à dire que mon dernier affichage est toujours l'echo de la requête sql, et pas du ret.

    j'ai mis var_dump($ret); , mais ça ne change rien. Que ma requête affichée


    Je voudrais utiliser la méthode objet, comme j'ai essayé de le faire un peu partout.

  9. #9
    Invité
    Invité(e)
    Par défaut
    ah non pardon j'avais mal acutalisé, voilà ce que le var_dump($ret); m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(13) ["lengths"]=> NULL ["num_rows"]=> int(14) ["type"]=> int(0) }

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Ah bah tu n'as même pas "Connexion ok" ou "Echec de la connexion ..." qui s'affiche avant ?
    Tu testes sur un serveur distant ou en local ? Sur certains serveurs archaîques l'extension mysqli n'est pas installé... (alors qu'elle devrait l'être par défaut).

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Pas vu ta précédente réponse avant de poster mon dernier message. Donc c'est ok et il te suffit de lire tes lignes avec mysqli_fetch_object (si tu veux rester avec la notation objet).

  12. #12
    Invité
    Invité(e)
    Par défaut
    Je n'ai pas tout copié en fait.
    j'ai bien le connexion ok et la requête qui s'affiche, et j'ai en + ce que je t'ai mis.

    En fait, je crois que j'ai compris. C'est mon echo "ret=".$ret; qui est faux.

    Car j'ai supprimé ce echo, et mis echo "test"; et le test s'affiche bien... Moi qui croyais que ça bloquait.

    Et mysqli est bien installé, car ça fonctionne sur d'autres pages. C'est donc que j'ai une erreur plus loin dans mon code

  13. #13
    Invité
    Invité(e)
    Par défaut
    pour la notation objet c'est pas $mysqli->fetch_object($res) plutôt ?

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Oui il faut utiliser une fonction pour exploiter le résultat de ta requête.
    T'as le choix entre mysqli_fetch_object(), mysqli_fetch_array(), mysqli_fetch_assoc(), mysqli_fetch_row()
    Je t'ai mis un lien dans mon précédent message (pour chaque fonction mysqli documentée dans le manuel il y a un exemple en mode objet et un second exemple en mode procédural, difficile de faire plus complet).

  15. #15
    Invité
    Invité(e)
    Par défaut
    Merci, en fait j'avais déjà fait tout ça.
    J'ai trouvé d'où venait mon erreur.

    Elle était plus loin dans la page, je mettais $res->num_rows(), alors qu'il ne faut pas les parenthèses.

    Tout marche bien merci beaucoup pour votre aide.

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Ok bonne fin de journée.

    Au passage si tu veux faire plusieurs sites (te spécialiser dans la création web...), tu ferais aussi bien de passer à pdo (plus simple à écrire, plus souple) plutôt que d'utiliser mysqli. Mais cela demande plus de travail d'apprentissage au départ et si c'est pour faire la maj d'un seul site, mysqli convient tout à fait

  17. #17
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    J'ai voulu répondre hier mais le site était en maintenance.

    J'avais vu PDO en effet, mais mysqli me semblait plus abordable.

    J'ai plusieurs sites que je pensais faire passer en php objet. Je vais peut etre me mettre à potasser PDO.

    Merci beaucoup pour les conseils

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Effectivement, venant de mysql, l'extension mysqli est très abordable, elle a d'ailleurs été conçu pour ça, pour permettre une transition facile et pouvoir mettre à jour d'anciens sites sans y passer trop de temps. Et elle possède aussi pratiquement toutes les nouvelles fonctionnalités de pdo comme les requêtes préparées, le mode objet, etc. de sorte qu'on peut l'utiliser aussi pour des nouveaux développements.

    Mais bon si on a un peu de temps devant soi, autant sauter le pas et passer directement à pdo car il y a quand même de nombreux avantages, en vrac :

    - code plus portable (demande moins de modification si on change de sgbdd).
    - plus agréable et rapide à écrire que l'extension mysqli.
    - pour les requêtes préparées, possibilité (très pratique) de passer un tableau de valeur plutôt que d'associer individuellement les variables.
    - pour les requêtes préparées, possibilité d'avoir des marqueurs nommés.
    - grande communauté, donc beaucoup d'exemples de code sur les forums.

    ... pdo est devenu le nouveau standard

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

Discussions similaires

  1. [DOM] Perdu dans le dom après passage de PHP4 à PHP5
    Par kabkab dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 21/09/2008, 23h32
  2. Classe PHP5 et passage de paramètre
    Par beyo dans le forum Langage
    Réponses: 6
    Dernier message: 27/08/2008, 12h35
  3. Réponses: 7
    Dernier message: 25/02/2007, 04h26
  4. [Tableaux] erreur suite passage php4 à php5
    Par taka10 dans le forum Langage
    Réponses: 1
    Dernier message: 22/02/2007, 16h43
  5. Réponses: 3
    Dernier message: 19/05/2005, 10h46

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