Bonjour j'ai un code PDO qui me reteourne l'erreur suivante

Coonection failed: SQLSTATE[42000]: Syntax error or access violation:1064 You have an error in SQL syntax
Le message d'erreur n'est pas complet parce que je le reçois sur un téléphone portable.

Voici le code . Si quelqu'un à une idée


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
33
34
35
36
37
38
39
40
41
42
<?php 
define("DBHOST","localhost",TRUE);
define("DBUSERNAME","root",TRUE);
define("DBPASSWORD","***",TRUE);
define("DBNAME","tuto",TRUE);
 
//Récupération des données du sms
$time = $_GET['time'];                        // Date et heure d'envoi
$sender = $_GET['sender'];                   // Numéro de téléphone du Sender
$tab = $_GET['text'];  
 
// Etape 1 : séparation du préfixe et du reste
sscanf($tab, '%s %s', $prefix, $codes); 
// Etape 2 : développement de $codes en array
// Astuce : On remplace tous les [espace]T par ¤[prefixe] T.
// Puis on explode sur ¤.
$tab_array = explode('¤', $prefix . str_replace(' n', "$sender $time $prefix n", $codes));
// On change chaque code ACT T8 25 en "(ACT T8 25)"
$callback = function($id,$dat,$lib,$type,$nb) {
   return "($id,$dat,$lib,$type,$nb)";
};
$tab_array = array_map($callback, $tab_array);
// On peut maintenant l'imploder dans la requête SQL
 
$query = "INSERT INTO table(id,dat,lib,types,nb) VALUES \n" . implode("\n", $tab_array) .';';
 
$con = 'mysql:dbname='.DBNAME.';host='.DBHOST;
try {
    $cmd = new PDO($con,DBUSERNAME,DBPASSWORD,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    $affected = $cmd->exec($query);
 
    if($affected){ // $affected > 0
        echo "enregistrement reussi";
    } else {
        $myeCode = $stmt->errorCode();
        echo $myeCode;
    }
}
catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
?>