$tableName, 'fields' => $fields], 'fonctionRequete_insert.php (generique)', $ficAppelant); } if (empty($fields) || !is_array($fields)) { if ($afficherMsg != 0) { $admMsg .= "Aucun champ fourni pour l'INSERT"; $admMsgClass = 'ko'; } return false; } // ---------------------------------------------------- // Construction de la requête INSERT // ---------------------------------------------------- $cols = []; $params = []; $bindParams = []; foreach ($fields as $col => $val) { $cols[] = "`$col`"; // Colonnes simples avec backticks $params[] = ":$col"; // Paramètres PDO $bindParams[$col] = $val; // Valeurs à binder } $colsStr = implode(", ", $cols); $paramsStr = implode(", ", $params); if (!(substr($tableName, 0, 1) === '`' && substr($tableName, -1) === '`')) { $tableName = "`" . str_replace("`", "", $tableName) . "`"; } $reqInsert = "INSERT INTO $tableName ($colsStr) VALUES ($paramsStr);"; // Debug requête brute if ($localDebug == 2 && (isset($debug[1]) && $debug[1] == '1' || isset($debug[2]) && $debug[2] == '1')) { $debugMsg .= monDebug(2, ['requete Brute' => $reqInsert], $ficAppelant); } // Requête reconstruite $requeteFinale = reconstruireRequeteInsert($reqInsert, $bindParams); // Debug requête construite if (($localDebug == 1 || $localDebug == 2) && (isset($debug[1]) && $debug[1] == '1' || isset($debug[2]) && $debug[2] == '1')) { $debugMsg .= monDebug(2, ['Requête' => $requeteFinale], $ficAppelant); } // ---------------------------------------------------- // Exécution de la requête // ---------------------------------------------------- try { $stmt = $idPdo->prepare($reqInsert); $stmt->execute($bindParams ?? []); if ($afficherMsg == 1) { $admMsg .= "Requête INSERT exécutée avec succès "; $admMsgClass = 'ok'; } } catch (PDOException $e) { if ($afficherMsg != 0) { $admMsg .= "Erreur lors de l'exécution de la requête INSERT"; } if (($localDebug == 1 || $localDebug == 2) && (isset($debug[1]) && $debug[1] == '1' || isset($debug[2]) && $debug[2] == '1')) { if ($stmt) { $erreur = $stmt->errorInfo(); } else { $erreur = $idPdo->errorInfo(); } $debugMsg .= monDebug(2, [ 'PDO message' => $e->getMessage(), 'SQLSTATE' => $erreur[0], 'Driver code' => $erreur[1], 'Erreur mysql' => $erreur[2], 'SQL' => $reqInsert ], 'fonctionRequete_insert.php', $ficAppelant); } $admMsgClass = 'ko'; return false; } // Temps d'exécution if ($localDebug == 1 && (isset($debug[1]) && $debug[1] == '1' || isset($debug[2]) && $debug[2] == '1')) { $endTime = microtime(true); $executionTime = $endTime - $startTime; $debugMsg .= "\t|\tTemps d'exécution : " . number_format($executionTime, 5) . " secondes."; } return true; } function reconstruireRequeteInsert($sql, $params) { foreach ($params as $key => $val) { $escaped = is_numeric($val) ? $val : "'" . addslashes($val) . "'"; $sql = str_replace(":$key", $escaped, $sql); // Remplace les :param } return $sql; } ?>