5 août 2024
Liste des erreurs sous PHP
Il se peut que le post évolue avec le temps. N'hésitez pas à faire un CTRL + F pour faire une recherche spécifique.
Failed to open stream
L'erreur ci-dessus nous dit qu'il n'arrive pas à trouver le fichier correspondant, car le chemin ou le fichier est introuvable.
Dans notre cas, il fait référence au fichier config.php.
Pour régler le problème, vérifiez le chemin de votre fichier, si celui-ci se trouve dans un dossier, il faudra ajouter ../ devant votre chemin pour sortir du dossier et se retrouver à la racine.
l'arborescence est comme suit :
->index.php
->->/class/Baskets.php
->->/config/config.php
Dans notre fichier Baskets.php config est appelé comme suit :
<?php
require("config/config.php");
Et pour régler le soucis il suffit de rajouter ../ :
<?php
require("../config/config.php");
Cannot use object as array
Dans l'erreur ci-dessus, l'erreur vient d'une utilisation de tableau mal géré :
<?php
public function addProductBis($material[]){ /* code ... */ }
Pour régler le souci, il faut ajouter un = entre la variable et le tableau pour pouvoir ensuite utiliser un foreach ou un for pour parcourir le tableau :
<?php
public function addProductBis($material = []){
foreach($material as $mat) {
/* code ... */
}
}
Data truncated for column
L'erreur ci-dessus, nous indique qu'il y a une erreur dans l'ajout dans la base de donnée, car notre session panier à un souci dans ses clés :
On peut constater que notre session a comme clé "3". Alors qu'il doit retourner un entier (int) 3 sans ".
Le problème vient du formulaire d'envoi sur la page addPanier.php qui ajoute dans l'URL une erreur sur une variable inexistante (car nous visons addPanier.php et non pas la page actuelle pour l'envoi du formulaire).
<form action="addPanier.php?id=<?php print $id; if ($quantity) {
print $quantity;
} ?>" method="post">
<form action="addPanier.php?id=<?php print $id; ?>" method="post">
Pour résoudre cette erreur, il suffit de récupérer votre formulaire dans la page addPanier.php et non pas dans votre page actuelle :
<form action="addPanier.php?id=<?php print $id; ?>" method="post">
Uncaught PDO Exception: SQLSTATE [42S22]
Dans l'erreur ci-dessus, on peut voir que l'erreur nous indique qu'il manque une colonne dans notre requête sql dans notre cas "adresse_1"
<?php
public function addAdresse()
{
$adresse_1 = $this->getAdresse_1();
$adresse_suite = $this->getAdresse_suite();
$codepostal = $this->getCodepostale();
$ville = $this->getVille();
$sql = $this->connecte()->prepare("INSERT INTO adresse (addresse_1,adresse_suite,codepostal,ville) VALUES (:adresse_1,:adresse_suite,:codepostal,:ville ) ");
$sql->bindParam(":adresse_1", $adresse_1);
$sql->bindParam(":adresse_suite", $adresse_suite);
$sql->bindParam(":codepostal", $codepostal);
$sql->bindParam(":ville", $ville);
$sql->execute();
}
Pour régler le problème, il suffit de changer "addresse_1" en "adresse_1". Faite bien attention à l'orthographe de vos colonnes SQL.
<?php
public function addAdresse()
{
$sql = $this->connecte()->prepare("INSERT INTO adresse (adresse_1,adresse_suite,codepostal,ville) VALUES (:adresse_1,:adresse_suite,:codepostal,:ville ) ");
}
Cannot modify header information
L'erreur ci-dessous nous informe qu'il y a trop de redirection :
<?php
if (isset($_POST['moins'])) {
$idproduit = $_POST['moins'];
if($_SESSION['panier'][$idproduit]){
$_SESSION['panier'][$idproduit]--;
}
elseif ($_SESSION['panier'][$idproduit] == 0 ){
header('Location: delPanier.php?id='.$idproduit);
}
Pour palier à ça, il faut ajouter ob_start() à votre code, cela ajoute une temporisation de sortie à votre code puis on le nettoie avec ob_clean() :
<?php
ob_start();
if (isset($_POST['moins'])) {
$idproduit = $_POST['moins'];
if($_SESSION['panier'][$idproduit]){
$_SESSION['panier'][$idproduit]--;
header('Location: delPanier.php?id='.$idproduit);
ob_clean()
}
elseif ($_SESSION['panier'][$idproduit] == 0 ){
header('Location: delPanier.php?id='.$idproduit);
ob_clean()
}
Invalid parameter number
Dans l'erreur ci-dessus, on nous indique qu'il manque des paramètres sur notre requête sql :
public function addQuantite()
{
// ... //
if (!$data) {
$sql = $this->connecte()->prepare("INSERT INTO produits_quantite (produits_id, quantites, taille_id) VALUES (:produits_id, :quantites, :taille_id)");
} else {
$sql = $this->connecte()->prepare("UPDATE produits_quantite SET quantites = :quantites WHERE produits_id = :produits_id");
}
$sql->bindParam(":produits_id", $id);
$sql->bindParam(":quantites", $quantite);
$sql ->bindParam(":taille_id", $tailleId);
$sql->execute();
}
Pour régler le souci, il faut prendre en compte le else et mettre les bindParam dans la condition :
PS : Pour savoir combien de paramètre, il faut, comptez simplement le nombre de colonnes que vous appelez.
public function addQuantite()
{
// ... //
if (!$data) {
$sql = $this->connecte()->prepare("INSERT INTO produits_quantite (produits_id, quantites, taille_id) VALUES (:produits_id, :quantites, :taille_id)");
$sql->bindParam(":produits_id", $id);
$sql->bindParam(":quantites", $quantite);
$sql ->bindParam(":taille_id", $tailleId);
} else {
$sql = $this->connecte()->prepare("UPDATE produits_quantite SET quantites = :quantites WHERE produits_id = :produits_id");
$sql->bindParam(":produits_id", $id);
}
$sql->execute();
}
Uncaught PDO Exception: SQLSTATE [23000]
Dans l'erreur ci-dessus, on peut voir que notre requête SQL ne s'exécute pas, car il y a un souci au niveau des clés étrangères.
Pour régler le souci, vérifiez dans votre base de données si la colonne de votre clé étrangère est au format BIGINT ou INT unsigned et que la correspondance à l'ID choisi est la même.
Exemple :
Vous avez une table "users" qui contient les colonnes :
- - id
- - pseudo
- - password
et une table "photoUsers" qui contient :
- - id
- - userId
- - namePicture
Si dans la table "users" l'id est au format BIGINT unsigned, il faudra que dans la table "photoUsers" l'userId soit au format BIGINT unsigned également ! Ils doivent correspondre au format de la clé auquel, ils sont liés.
Mots clés:
php poo sql pdo erreurs
Cours Du Dev
Recevez les dernières formations disponibles en vous inscrivant à la newsletter
Créé par arkunis