Bonjour à tous,

Je rencontre un problème lorsque j'essaye de faire un INSERT sur la validation de mon formulaire.
J'arrive bien à me connecter à la BDD mais il m'affiche l'erreur suivante : Array ( [0] => Array ( [0] => 22007 [SQLSTATE] => 22007 [1] => 241 [code] => 241 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]�chec de la conversion de la date et/ou de l'heure � partir d'une cha�ne de caract�res. [message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]�chec de la conversion de la date et/ou de l'heure � partir d'une cha�ne de caract�res. ) )

J'ai donc essayé de changer le format de ma date mais rien à faire il m'affiche toujours cette erreur, j'ai essayé d'insérer manuellement sur la BDD avec le format de date que j'envoie et cela fonctionne.

Je voulais donc savoir si vous aviez des idées de l'erreur que je rencontre et si vous avez la solution ça m'aiderait grandement.

$connectionInfo = array("Database" => $bdd, "UID" => $user, "PWD" => $passwd);
$conn = sqlsrv_connect($host, $connectionInfo);
if ($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}
$sql = "INSERT INTO RAPPORTS_SKF (REF_ART, SERIAL, AUTEUR, DAT, STEP_1, COMMENT_1, STEP_2, COMMENT_2 ,STEP_3, COMMENT_3, STEP_4, COMMENT_4, STEP_5,
    COMMENT_5, STEP_6, COMMENT_6, STEP_7, COMMENT_7, STEP_8, COMMENT_8, STEP_9, COMMENT_9, STEP_10, COMMENT_10, STEP_11, COMMENT_11, STEP_12, COMMENT_12,
    STEP_13, COMMENT_13, OBSERVATION) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

if (!isset($_POST['REF_ART'])) {
    die("Impossible de récupérer la valeur du champ Part N°");
}

$date = $_POST['DAT'];
$newDate = DateTime::createFromFormat('d/m/Y', $date);
$newDate = $newDate->format('d-m-Y');
//var_dump($newDate);

$params = array(
    "REF", $_POST['REF_ART'],
    1, $_POST['SERIAL'],
    2, $_POST['AUTEUR'],
    3, $newDate,
    4, $_POST['STEP_1'],
    5, $_POST['COMMENT_1'],
    6, $_POST['STEP_2'],
    7, $_POST['COMMENT_2'],
    8, $_POST['STEP_3'],
    9, $_POST['COMMENT_3'],
    10, $_POST['STEP_4'],
    11, $_POST['COMMENT_4'],
    12, $_POST['STEP_5'],
    13, $_POST['COMMENT_5'],
    14, $_POST['STEP_6'],
    15, $_POST['COMMENT_6'],
    16, $_POST['STEP_7'],
    17, $_POST['COMMENT_7'],
    18, $_POST['STEP_8'],
    19, $_POST['COMMENT_8'],
    20, $_POST['STEP_9'],
    21, $_POST['COMMENT_9'],
    22, $_POST['STEP_10'],
    23, $_POST['COMMENT_10'],
    24, $_POST['STEP_11'],
    25, $_POST['COMMENT_11'],
    26, $_POST['STEP_12'],
    27, $_POST['COMMENT_12'],
    28, $_POST['STEP_13'],
    29, $_POST['COMMENT_13'],
    30, $_POST['OBSERVATION']
);

$stmt = sqlsrv_query($conn, $sql, $params);

if ($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}

2 réponses


JeMenBeur
Auteur
Réponse acceptée

Merci à toi mais j'ai résolu mon souci, c'était le format de mon array qui n'était pas bon, j'ai enlevé les nombres de 1 à 30 et ça fonctionne maintenant.

Salut, la date devrait plutôt se trouver au format Y-m-d