alpha_full/admin/adminInclude/_fonctions/fonctionRequete_Insert.php
2026-04-06 22:58:51 +02:00

112 lines
3.5 KiB
PHP
Executable File

<?php
// afficherMsg==1 affiche le succes; afficherMsg==1 ou 2 affiche si erreur
function dynRequete_insert($tableName, $fields = [], $ficAppelant = '', $afficherMsg = 0, $localDebug = 0) {
global $admMsg, $admMsgClass, $idPdo, $debugMsg, $debug; // Variables globales
$startTime = microtime(true); // Mesure du temps d'exécution
$reqInsert = '';
// Debug sur la fonction
if ($localDebug == 2 && (isset($debug[1]) && $debug[1] == '1' || isset($debug[2]) && $debug[2] == '1')) {
$debugMsg .= monDebug(2, ['tableName' => $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;
}
?>