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 :

Requêtes SQL depuis mise à jour Php 7.0 [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de torrgovin
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Points : 69
    Points
    69
    Par défaut Requêtes SQL depuis mise à jour Php 7.0
    Salut à tous,

    J'ai voulu mettre à jour mon ancien php 5.6 vers 7.0

    MALHEUR :'( Toutes les anciennes requêtes SQL ne fonctionnent plus.

    Du coup j'ai mis pas mal de lignes à jour avec les nouvelles instructions MySQLi au lieu de MySQL mais il y a toujours des messages d'erreurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined index: month in /home/odysseetransfer/commande/planning.php on line 11
    et quand je me réfère à cette ligne, voici ce qu'elle contient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $nb_commande_attente_req=$bdd->query("select count(*) as TOTAL FROM Commande where Etat='Attente' and MONTH(DateResa)=".(($_REQUEST['month']!='')?$_REQUEST['month']:'MONTH(NOW())')." and YEAR(DateResa)=YEAR(NOW())") or die(print_r($bdd->errorInfo()));
     
    $commande_attente=$nb_commande_attente_req->fetchAll(PDO::FETCH_ASSOC);
    Qu'est ce qui n'est pas bon dans cette requête ? Avant le passage en php 7.0 ces requêtes fonctionnaient.

    Merci pour votre aide,
    Steeve

  2. #2
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,

    C'est PDO que vous montrez et il n y a pas d'index month (avec cette requête là) mais plutôt TOTAL
    PS: un fetch ou fetchColumn aurait suffit
    Le bienfait n'est jamais perdu

  3. #3
    Membre du Club Avatar de torrgovin
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par Willy_k Voir le message
    Salut,

    C'est PDO que vous montrez et il n y a pas d'index month (avec cette requête là) mais plutôt TOTAL
    PS: un fetch ou fetchColumn aurait suffit

    Bonjour Willy_k

    Merci beaucoup pour la réponse.

    A vrai dire ce n'est pas moi qui ai dévellopé le site et je m'y connais très peu en langage mais j'arrive à me débrouiller.

    En effet, c'est une requête PDO qui contient une requête Mysql c'est bien ça ?

    Pour résoudre le problème, je dois remplacer quelle valeur ? fetchAll par fetch tout court ?

    Merci

  4. #4
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Autant pour moi l'erreur porte surtout sur le $_REQUEST['month'] , d'où provient cette donnée ?
    Utiliser !empty($_REQUEST['month']) à la place de $_REQUEST['month'] != '' => (!empty($_REQUEST['month']))?intval($_REQUEST['month']):'MONTH(NOW())'.

    Mais le commentaire du fetch/fetchColumn reste toujours valable.
    PS: Peut être privilégier $_GET['month'] ou $_POST['month'] suivant le mode de récupération de cette donnée.
    Le bienfait n'est jamais perdu

  5. #5
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par Willy_k Voir le message
    PS: Peut être privilégier $_GET['month'] ou $_POST['month'] suivant le mode de récupération de cette donnée.
    Je plussoie là-dessus, il faut faire attention à l’ordre défini par la directive request_order. Généralement c’est 'GP' qui signifie « GET puis POST ». En cas de conflit de nom, la variable GET sera écrasée par la variable POST du même nom, et $_REQUEST contiendra la valeur POST. Mais il vaut mieux vérifier.

    Voici un exemple illustrant le mécanisme d’écrasement :
    Code : 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
    <?php
    echo 'request_order =';
    var_dump(ini_get('request_order'));
     
    echo '$_GET =';
    var_dump($_GET);
     
    echo '$_POST =';
    var_dump($_POST);
     
    echo '$_REQUEST =';
    var_dump($_REQUEST);
    ?>
    <form method="post" action="?param=get">
      <input type="text" readonly name="param" value="post" />
      <input type="submit" />
    </form>
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Je déborde du sujet initial mais il ne faut JAMAIS utiliser des variables get/post/request/etc... directement dans les requêtes Sql sans les avoir vérifiée et filtrée.
    Sinon le site s'expose à des failles de sécurité importante à base d'injection SQL.

    Pour éviter celà on préconise généralement d'utiliser des requêtes préparées (prepared statement).
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    @Grunk, souvent un "bon vieux" cast est suffisant (dans son cas , c'est ce que je ferais) mais bon on est jamais assez prudent
    Le bienfait n'est jamais perdu

  8. #8
    Membre du Club Avatar de torrgovin
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Points : 69
    Points
    69
    Par défaut
    Salut les gars,

    Merci beaucoup pour vos retours.

    Vu que je suis un peu novice, j'ai demandé l'aide d'une personne qui maitrise mieux le sujet sur codeur.com car le site était down et mes clients n'arrêtaient pas de m'appeler, du coup il a rapidement changé la syntaxe des morceaux de codes qui posaient problèmes.

    J'ai pris note de vos remarques et je lui en ferais part également.

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

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