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 :

mysqli_numrows retourne 0 alors qu'un enregistrement [MySQL]


Sujet :

PHP & Base de données

  1. #21
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 365
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    J'ai enfin pu faire un dump la bdd sur le bon PC :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    -- phpMyAdmin SQL Dump
    -- version 4.1.14.2
    -- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
    --
    -- Client :  clm02.evxonline.net
    -- Généré le :  Jeu 21 Août 2014 à 14:34
    -- Version du serveur :  5.1.69-log
    -- Version de PHP :  5.3.20
     
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données :  `muco`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `visites`
    --
     
    CREATE TABLE IF NOT EXISTS `visites` (
      `ip` varchar(30) DEFAULT NULL,
      `timestamp1` date DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    --
    -- Contenu de la table `visites`
    --
     
    INSERT INTO `visites` (`ip`, `timestamp1`) VALUES
    ('82.122.141.244', '2014-08-21');
     
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    mais y a un peu de nouveau : alors que la requête SQL select COUNT(*) from visites where (ip = '82.122.141.244') retourne 1 avec PHMyAdmin, le code
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$query ="select COUNT(*) from visites where (ip = '".$ip."')";
    	$result=mysqli_query($db,$query);
    	$nbre_result=mysqli_fetch_array($result);
    	echo "<br/>req=".$query."   nbre_res=".$nbre_result[0]."<br/>";
    affiche
    req=select COUNT(*) from visites where (ip = '82.122.141.244') nbre_res=0
    Pourquoi ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #22
    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
    Tu as essayé d'écrire l'ip directement dans ta requête ? (encore une fois un debug très basique à réaliser)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #23
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 365
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Est-ce vraiment un problème de debug ? Car si je rajoute l'affichage des erreurs SQL, ça ne râle pas...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$query ="select COUNT(*) from visites where (ip = '".$ip."')";
    	if (!($result = mysqli_query($db, $req))) { echo "<br/>erreur mysqli : ".mysqli_error($db);}
    	else {
    	    ...
    	}
    par contre, ensuite j'ai un warning pas fameux (mais nouveau) :
    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/vhosts/viradeduvercors.org/httpdocs/html5/compteur/visite.php on line 41 NULL
    var_dump(nbre_result):
    pour
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	$nbre_result=mysqli_fetch_array($result);
    	echo "<br/>var_dump(nbre_result):".var_dump($nbre_result)."<br/>";
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #24
    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
    Pourquoi tu t'arrêtes dans ton debugage à chaque fois pour donner un resultat intermediaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var_dump($db);
    var_dump($result);
    var_dump($query);
    etc.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #25
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 365
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Les var_dump de $db et de $query sont cohérents, mais pas celui de $result :
    array(2) { [0]=> string(1) "0" ["COUNT(*)"]=> string(1) "0" }
    Ce 0 pour $result explique le warning mais ne me fait pas trouver de solution ; en vois-tu une ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #26
    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
    Tu t'embrouilles dans ce que tu nous montres non ?
    Le var_dump que tu nous montres correspond au retour d'un "fetch", pas d'un "query".

    Je t'ai proposé cet apres-midi de faire le test en mettant directement ton ip dans la requête, est-ce que tu l'as fait ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #27
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 365
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu as essayé d'écrire l'ip directement dans ta requête ?
    honnêtement, j'avais pris le ? pour un ! Donc je ne comprenais pas ta remarque et j'avais retenu que j'avais mal fait quelque chose !

    Ayant enfin compris, je viens de faire l'essai (pas tout de suite, car je suis au boulot et sors d'une réunion...) ; comme je suis sur l'autre PC, j'ai bien mis une des 2 adresses IP que j'ai au boulot (elles changent tous les jours) et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	$query ="select COUNT(*) from visites where (ip = '205.167.7.211')";
    	if (!($result = mysqli_query($db, $query))) { echo "<br/>erreur mysqli : ".mysqli_error($db);}
    	else {
    	$nbre_result=mysqli_fetch_array($result);
    	echo "<br/>var_dump(nbre_result):".var_dump($nbre_result)."<br/>";
    	echo "<br/>req=".$query."   nbre_res=".$nbre_result[0]."<br/>";
    	}
    donne 0 et le var_dump que je montre est bien celui d'un fetch vu que celui de $db et celui de $query sont bons et qu'il n'y a que celui du $result retourné par le fetch qui ne va pas...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #28
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 365
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Ce matin, j'ai simplifié à l'extrême la requête :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            //$query ="select (ip) from visites where (ip = '".$ip."')";
    	$query ="select ip from visites"; // where (ip = '82.122.7.51')";
     
    	if (!($result = mysqli_query($db, $query))) { echo "<br/>erreur mysqli : ".mysqli_error($db);}
    	else {
    	//$nbre_result = mysqli_num_rows($result);
     
    	$nbre_result=mysqli_fetch_array($result);
    	echo "<br/>var_dump(nbre_result):".var_dump($nbre_result)."<br/>";
    	echo "var_dump(query):".var_dump($query)."<br/>";
    	echo "<br/>req=".$query."   nbre_res=".$nbre_result[0]."<br/>";
            }
    et le var_dump de $nbre_result retourne encore NULL et je comprends pas...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #29
    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
    Depuis le debut tu nous dis que tu obtiens 0, en fait c'est NULL ?

    Comme je te l'ai déjà dit, developpe en affichant TOUTES les erreurs PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #30
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 365
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    La longueur de mon silence s'explique par le fait que d'abord, j'ai essayé de corriger le problème en convertissant tout avec PDO (MySQLi -> PDO), que j'avais un autre problème, puis voulant répondre à la question il fallait que je revienne en arrière et ce faisant, je me suis aperçu que j'avais tout cassé (et évidemment, pas de version de backup), d'où cette discussion : http://www.developpez.net/forums/d14.../centrer-menu/. Je tiens le bon bout, mais avant de me repencher sur le problème PHP, je compte passer du temps pour combler mes lacunes html/css...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/05/2010, 00h22
  2. Réponses: 4
    Dernier message: 18/01/2010, 12h38
  3. Requete SQL qui ne retourne rien alors que ma table n est pas vide
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/06/2009, 19h16
  4. Réponses: 4
    Dernier message: 17/09/2008, 13h05
  5. Réponses: 1
    Dernier message: 09/03/2007, 13h04

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