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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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
    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 émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    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 : 541
    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

  3. #3
    Membre confirmé 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
    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 émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    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 : 541
    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.

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

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    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 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    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

+ 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