Bonjour,
J'aimerais retourner le code erreur de ce code PHP pour insérer des données. Je n'ai aucune erreur et pourtant l'insertion ne se fait pas. Pourriez-vous me dire comment faire ?
Merci.

<?php
session_start();
if(empty($_SESSION['ID']))
{
	header('Location: index.php');
	exit();
}

$ID = $_SESSION['ID'];
$date_sortie_produit = "01-01-2020";
$nom_produit = filter_input(INPUT_POST, 'nom_produit');
$description_produit = filter_input(INPUT_POST, 'description_produit');
$nombre_produit = filter_input(INPUT_POST, 'nombre_produit');
$nom_marque = filter_input(INPUT_POST, 'nom_marque');
$description_marque = filter_input(INPUT_POST, 'description_marque');

$connexion = mysqli_connect("localhost", "compte", "", "nom_bdd");
if (!$connexion) {
    echo "Erreur : Impossible de se connecter à MySQL." . PHP_EOL;
    echo "Errno de débogage : " . mysqli_connect_errno() . PHP_EOL;
    echo "Erreur de débogage : " . mysqli_connect_error() . PHP_EOL;
    exit;
}

$stmt = $connexion->prepare("INSERT INTO produit VALUES (NULL, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param('sssssss',$ID, $date_sortie_produit,$nom_produit, $description_produit, $nombre_produit,$nom_marque, $description_marque  );
$stmt->execute();
$result = $stmt->store_result();
if ($result){
  echo "OK";
}else {
  echo "NOK";
}
mysqli_close($connexion);
?>

Modifié par chritopherr (10 Mar 2020 - 16:46)
Salut,

pour le php via ajax, il ne faut surtout pas faire des echo (c'est le meilleur moyen pour que cela ne marche pas) mais des error_log puis regarder les logs dans ton /etc/var/log/apache2/error.log pour voir où il passe.

Edit : et pour voir les contenus de variables : var_dump et var_export, ce qui donne par exemple :
error_log(var_export($message, true));


Bon courage
Modifié par Mathieuu (10 Mar 2020 - 15:39)
Mathieuu a écrit :
Salut,

pour le php via ajax, il ne faut surtout pas faire des echo (c'est le meilleur moyen pour que cela ne marche pas) mais des error_log puis regarder les logs dans ton /etc/var/log/apache2/error.log pour voir où il passe.

Edit : et pour voir les contenus de variables : var_dump et var_export, ce qui donne par exemple :
error_log(var_export($message, true));


Bon courage


Salut Mathieuu,
Merci pour ton message, j'ai édité entre temps le code pour ne pas utiliser AJAX. J'ai ainsi pu supprimer la plupart des erreurs mais là je bloque car il n'y en a plus mais l'insertion ne se fait pas.
Modérateur
Bonjour:


$stmt->bind_param('sssssss',$ID, $date_sortie_produit,$nom_produit, $description_produit, $nombre_produit,$nom_marque, $description_marque);


$ID et $nombre_produit sont des chaînes de caractères dans ta DB?

Sinon, pas d'erreur dans les logs php ou mysql?
Le problème venait bien du fait que j'insère une string alors que la structure de la table était un INT à la colonne nombre_produit.
Il faut donc récupérer la valeur comme suit :
$nombre_produit= (int)filter_input(INPUT_POST, 'nombre_produit');

Et insérer comme suit :
$stmt-&gt;bind_param('ssssiss',$ID, $date_sortie_produit,$nom_produit, $description_produit, $nombre_produit,$nom_marque, $description_marque);

Modifié par chritopherr (10 Mar 2020 - 17:00)
Meilleure solution