Fatal error: call to member function prepare() on nul
Fermé
Python997
-
12 août 2019 à 07:41
yg_be
Messages postés23535Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention27 avril 2025
-
12 août 2019 à 15:06
Bonjour, Bonjour à tous je rencontre un problème suivant dans Mon code php. fatal error: call to member function prepare() on nul
J'essaye juste de récupérer les informations saisies par le user
<?phpsession_start();require_once('db/database.php');/***fonction de récupération des données** @param string nom du client* @param string prenom du client* @param string date de naissance du client* @param string telephone du client* @param string numero de permis du client* @param string date de délivrance* @param string boite postal* @param string adresse du client* @param string marque de l'auto* @param string immatriculation de l'auto* @param string chassis* @param string date de la première mise en circulation* @param string poids du véhicule* @param string valeur neuve de l'auto* @param string valeur venale de l'auto* @param string nombre de passagers*/// déclaration de variable$NomErr=$PrenomErr=$DateNaisErr=$TelephoneErr=$NoPermisErr=$DateDelErr=$BPErr=$AdresErr="";$Nom=$Prenom=$DateNais=$Telephone=$NoPermis=$DateDel=$BP=$Adres="";$MarqueErr=$ImmatriculationErr=$ChassisErr=$datePrCirculationErr=$PoidsErr=$valeurNeuveErr=$valeurVenalErr=$nbrePassagersErr="";$Marque=$Immatriculation=$Chassis=$datePrCirculation=$Poids=$valeurNeuve=$valeurVenal=$NbrePassagers="";if($_SERVER["REQUEST_METHOD"]=="POST"){functiontest_input($data){$data=trim($data);$data=stripcslashes($data);$data=htmlspecialchars($data);return$data;}//reduction des chaînes$nom=$_POST['Nom_cl'];$prenom=$_POST['Prenom_cl'];$date=$_POST['DateNais_cl'];$telephone=$_POST['Telephone_cl'];$permis=$_POST['noPermis'];$datedel=$_POST['dateDelivrance'];$bp=$_POST['BoitePostal'];$adres=$_POST['adresse'];$marque=$_POST['marque'];$immat=$_POST['immatriculation'];$chassis=$_POST['Chassis'];$datepr=$_POST['datePrCirculation'];$poids=$_POST['Poids'];$valeurneuve=$_POST['valeurNeuve'];$valeurvenal=$_POST['valeurVenal'];$passagers=$_POST['nbrePassagers'];//fonction de récupération des informations du clientsfunctionrecup_client(){//on vérifie si tout les champs ont bien été rempliif(!empty($nom)){$NomErr="veillez saisir le nom du client...";}else{$Nom=test_input(htmlspecialchars(trim($nom)));if(!preg_match("/^[a-zA-Z]*$/",$Nom)){$NomErr="le nom doit contenir rien que des lettres et des espace";}}if(!empty($prenom)){$PrenomErr="veillez saisir le prenom du client...";}else{$Prenom=test_input(htmlspecialchars(trim($prenom)));}if(!empty($date)){$DateNaisErr="veillez saisir la date de naissance du client...";}else{$DateNais=test_input(htmlspecialchars(trim($date)));}if(!empty($telephone)){$TelephoneErr="veillez saisir le numero de téléphone du client...";}else{$Telephone=test_input(htmlspecialchars(trim($telephone)));}if(!empty($permis)){$NoPermisErr="veillez saisir le numéro de permis du client...";}else{$NoPermis=test_input(htmlspecialchars(trim($permis)));}if(!empty($datedel)){$DateDelErr="veillez saisir la date de délivrance...";}else{$DateDel=test_input(htmlspecialchars(trim($datedel)));}if(!empty($bp)){$BPErr="veillez saisir la boite postal du client...";}else{$BP=test_input(htmlspecialchars(trim($bp)));}if(!empty($adres)){$AdresErr="veillez saisir l'adresse du client...";}else{$Adres=test_input(htmlspecialchars(trim($adres)));}//variable contenant les différentes requêtes$select='SELECT ID_Cl FROM clients WHERE Nom_Cl=? ORDER BY Nom_Cl ASC ID_Cl ASC';$insert='INSERT INTO clients VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';$donne=array();$sel=$db->prepare($select);$sel->execute(array($nom));$ins=$db->prepare($insert);$ins->execute(array('',$Nom,$Prenom,$DateNais,'',$Telephone,'','','',$NoPermis,$DateDel,$BP,$Adres,'','',''));$nbr=$ins->rowcount();unset($db);if(count($donne)>0){echo'<pres>';print_r($donne);echo'<pres>';}}returnrecup_client();//récupération des informations de l'automobilefunctionrecup_auto(){if(!empty($marque)){$MarqueErr="veillez saisir la marque de l'automobile...";}else{$Marque=test_input(htmlspecialchars(trim($marque)));}if(!empty($immat)){$ImmatriculationErr="veillez saisir l'immatriculation de l'automobile...";}else{$Immatriculation=test_input(htmlspecialchars(trim($immat)));}if(!empty($chassis)){$ChassisErr="veillez saisir le numéro du chassis de l'automobile...";}else{$Chassis=test_input(htmlspecialchars(trim($chassis)));}if(!empty($datepr)){$datePrCirculationErr="veillez saisir la date de la première mise en circulation...";}else{$datePrCirculation=test_input(htmlspecialchars(trim($datepr)));}if(!empty($poids)){$PoidsErr="veillez saisir le poids de l'automobile...";}else{$Poids=test_input(htmlspecialchars(trim($poids)));}if(!empty($valeurneuve)){$valeurNeuveErr="veillez saisir la valeur neuve de l'automobile...";}else{$valeurNeuve=test_input(htmlspecialchars(trim($valeurneuve)));}if(!empty($valeurvenal)){$valeurVenalErr="veillez saisir la valeur venal de l'automobile...";}else{$valeurVenal=test_input(htmlspecialchars(trim($valeurvenal)));}if(!empty($passagers)){$nbrePassagersErr="veillez saisir le nombre passagers de l'automobile...";}else{$NbrePassagers=test_input(htmlspecialchars(trim($passagers)));}//requête$select1='SELECT ID_Auto FROM automobile';$insert1='INSERT INTO automobile VALUES(?,?,?,?,?,?,?,?,?,?)';$req=$db->prepare($select1);$req->execute();$req1=$db->prepare($insert1);$req1->execute(array('',$Marque,$Immatriculation,$Chassis,$Poids,'',$valeurNeuve,$valeurVenal,$NbrePassagers));$donne=array();$nbr=$req1->rowcount();unset($db);if(count($donne)>0){echo'<pres>';print_r($donne);echo'<pres>';}}}?>
Configuration: Android / Chrome 76.0.3809.89
A voir également:
Fatal error: call to member function prepare() on nul
Comme je te l'ai dit, $db ici ne contient rien. Si tu as rendu ta variable statique dans une class, elle ne dépassera jamais le cadre de la class.
Tu peux le vérifier toi-même en faisant un petit var_dump($db); ça devrait te dire que c'est vide :).
Donc tu me conseil de rendre ma variable $db en global ?
yg_be
Messages postés23535Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention27 avril 20251 579
>
Python997
Modifié le 12 août 2019 à 10:42
bonjour,
moi je ferais
$db=connection_db();
, en adaptant, si nécessaire, database.php.
ton code est illisible, car non indenté.
que retourne la fonction recup_client()?
Python997
>
yg_be
Messages postés23535Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention27 avril 2025 12 août 2019 à 14:43
La fonction recup_client retourne les infos du client..
J'essaye cette methode je revient Vers vous
12 août 2019 à 08:01
12 août 2019 à 08:07
Tu peux le vérifier toi-même en faisant un petit var_dump($db); ça devrait te dire que c'est vide :).
12 août 2019 à 08:18
Modifié le 12 août 2019 à 10:42
moi je ferais , en adaptant, si nécessaire, database.php.
ton code est illisible, car non indenté.
que retourne la fonction recup_client()?
12 août 2019 à 14:43
J'essaye cette methode je revient Vers vous