Bonjour,
j'ai écrit le script de test suivant :
Mon souci : le var_dump donne INSERT into `license` (sesa, application_key, currently_active, activate_date, deactivate_date) VALUES (27384, 1, , '2019-06-12', '2020-06-12') et le message d'erreur est :
Code php : 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 $SESAID=27384; $application_key=1; $CURRENTLYACTIVE=NULL; $ACTIVATEDATE="2019-06-12"; $DEACTIVATEDATE="2020-06-12"; $ppi = new PDOPlusPlus(PDOPlusPlus::MODE_SQL_DIRECT); // utilisation d'une classe qui fournit tous les accès à PDO $pdo = $ppi->pdo(); // $pdo est la ressource PDO $values = [ 'sesa' => (int)($SESAID), 'application_key' => (int)($application_key), 'CURRENTLYACTIVE' => (bool)($CURRENTLYACTIVE), 'ACTIVATEDATE' => $pdo->quote($ACTIVATEDATE), 'DEACTIVATEDATE' => $pdo->quote($DEACTIVATEDATE) ]; $sql_insert = "INSERT into `license` (sesa, application_key, currently_active, activate_date, deactivate_date) VALUES (".implode(', ', $values).")"; var_dump($sql_insert); $pdo->exec($sql_insert);Pas étonnant vu que la colonne currently_active reçoit une valeur vide. Comment faire SVP ?Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de ', '2019-06-12', '2020-06-12')' à la ligne 2 in C:\wamp64\www\ppp\testppp.php:50 Stack trace: #0 C:\wamp64\www\ppp\testppp.php(50): PDO->exec('INSERT into `li...') #1 {main} thrown in C:\wamp64\www\ppp\testppp.php on line 50
Pour info, la DDL de la table est :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 DROP TABLE IF EXISTS `license`; CREATE TABLE IF NOT EXISTS `license` ( `sesa` int(6) NOT NULL, `application_key` smallint(2) NOT NULL, `currently_active` tinyint(1) DEFAULT NULL, `activate_date` date DEFAULT NULL, `deactivate_date` date DEFAULT NULL, PRIMARY KEY (`sesa`,`application_key`) USING BTREE, KEY `fk_application` (`application_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Partager