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ête qui plante [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Requête qui plante
    Bonjour à tous,

    J'ai cette requête PDO :

    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
    $insertion = "INSERT INTO neuro_event(patient_id,event_date, date_pour_Tri, position";                                                                       
    if($arr[1] == "radio" || $arr[1] == "chimio" || $arr[1] == "vaccinotherapy" || $arr[1] == "targetedtherapy")
    {
        $insertion.= ", remarque, id_debut_traitement";
    }                                                                                                                                                                                                                                                                                                                                
    $insertion.= ") VALUES (?, ?, ?, 0";
     
    if($arr[1] == "radio" || $arr[1] == "chimio" || $arr[1] == "vaccinotherapy" || $arr[1] == "targetedtherapy")
    {
        if(isset($arr_id[2])) 
        {
            $insertion.= ", 'fin', ?"; //si c'est un examen médical, je mets "fin" et je mets l'id du traitement de début pour pouvoir retrouver le traitement de fin plus facilement
        }
        else $insertion.= ", 'debut', ?"; //si c'est un examen médical, je mets "début", je mets '' autrement erreur car un des champs n'est pas mise à jour
    }
     
    $insertion.= ") ";
    Je la construit donc par rapport à certaines conditions.

    Le tableau de paramètres est aussi construit via les conditions ci-dessus :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    if($arr[1] == "radio" || $arr[1] == "chimio" || $arr[1] == "vaccinotherapy" || $arr[1] == "targetedtherapy" || $arr[1] == "radio_fin" || $arr[1] == "chimio_fin" || $arr[1] == "vaccinotherapy_fin" || $arr[1] == "targetedtherapy_fin" )
    {
        if(isset($arr_id[2])) 
        {
            $req->execute(array(
                  ":dmu"=>$_SESSION['dmu'],
                  ":valeur"=>($_POST['valeur'] == '0000-00-00') ? NULL : $_POST['valeur'],
                  ":valeur2"=>($_POST['valeur'] == '0000-00-00') ? NULL : $_POST['valeur'],
                   ":id_debut"=>$_POST['id_debut']
                 ));
        }
        else $req->execute(array(
                  ":dmu"=>$_SESSION['dmu'],
                  ":valeur"=>($_POST['valeur'] == '0000-00-00') ? NULL : $_POST['valeur'],
                  ":valeur2"=>($_POST['valeur'] == '0000-00-00') ? NULL : $_POST['valeur'],
                   ":id_debut"=>""
                  ));
    }
    else //ce n'est pas un traitement avec un début et une fin, j'utilise un autre tableau
    {
        $req->execute(array(
                  ":dmu"=>$_SESSION['dmu'],
                  ":valeur"=>($_POST['valeur'] == '0000-00-00') ? NULL : $_POST['valeur'],
                  ":valeur2"=>($_POST['valeur'] == '0000-00-00') ? NULL : $_POST['valeur']
                 ));
    }
    //var_dump($datas);
    //echo str_replace(array_keys($datas), array_values($datas), $req->queryString);
     
     
     
    }
    à l'exécution, j'obtiens ce message d'erreur :

    <br />
    <b>Fatal error</b>: Uncaught exception 'PDOException' with message 'SQLSTATE[IMSSP]: Tried to bind parameter number -1. SQL Server supports a maximum of 2100 parameters.' in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\Neuro2\AJAX\Enregistrer_info_event_on_change.php:172
    Stack trace:
    #0 C:\Program Files (x86)\EasyPHP-5.3.6.0\www\Neuro2\AJAX\Enregistrer_info_event_on_change.php(172): PDOStatement-&gt;execute(Array)
    #1 {main}
    thrown in <b>C:\Program Files (x86)\EasyPHP-5.3.6.0\www\Neuro2\AJAX\Enregistrer_info_event_on_change.php</b> on line <b>172</b><br />
    La ligne 172 est la suivante :

    C'est en fiait la fin du tableau.

    Auriez-vous une idée svp ?

    Merci d'avance et bon dimanche.

    beegees

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ce serait sans doute mieux si tu utilisais les noms des paramètres dans la construction de ta requête au lieu d'utiliser des marque-places "?" et à ta place j'alimenterais un tableau de paramètres $param au fur et à mesure de la construction de la requête, histoire d'être sûre que les conditions sont les mêmes.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Requête qui plante Access
    Par clickandgo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 23/04/2012, 21h10
  2. [Problème] Requête ping qui plante !
    Par magicbisous-nours dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/12/2007, 17h04
  3. [SQL] Requête sql qui plante sous firefox et marche sous IE
    Par PlayKat dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/10/2007, 16h17
  4. SimpleDataSet avec requête qui plante
    Par blond1888 dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/02/2007, 16h22
  5. Requête UPDATE qui plante
    Par rsgo dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/04/2006, 11h30

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