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