requête d'insertion dans la base de données

Par Maeva Ngoban, il y a 6 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

je cherche a inserer des données dans la bd

<?php session_start(); try { $db = new PDO('mysql:host=localhost;dbname=blog','root',''); $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); # les noms des champs seront en caractères miniscules $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); # les erreurs lanceront des exceptions echo "connecté"; } catch (Exception $e) { echo "Erreur: ".$e->getMessage(); #die(); } ?> <h1>bienvenue <?php echo $_SESSION['username']; ?></h1> <br> <?php if (isset($_SESSION['username'])) { # code... if (isset($_GET['action'])) { # code... if ($_GET['action']=='add') { # code... if (isset($_POST['submit'])) { # code... $titre=$_POST['titre']; $description=$_POST['description']; $prix=$_POST['prix']; if ($titre&&$description&&$prix) { # code... $insert = $db -> prepare ("INSERT INTO article VALUES ('','$titre','$description','$prix')"); $insert->exec(); }else{ echo "veuillez remplir tous les champs"; } } ?> <form action="" method="POST"> <h3>Titre: </h3><input type="text" name="titre"><br> <h3>Description: </h3><input type="text" name="description"><br> <h3>Prix: </h3><input type="number" name="prix"><br><br> <input type="submit" name="submit"> </form> <?php }elseif ($_GET['action']=='modifier') { # code... }elseif ($_GET['action']=='supprimer') { # code... }else{ die('une erreur s\'est produite'); } } }else{ header('location: index.php'); } ?> <link rel="stylesheet" type="text/css" href="../style/bootstrap.css"/> <a href="?action=add">Ajouter un article</a> <a href="?action=modifier">Modifier un article</a> <a href="?action=supprimer">Supprimer un article</a>

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

ET voilà ce que j obtiens
Notice: Undefined variable: db in C:\wamp64\www\site_final\admin\admin.php on line 40
( ! ) Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\wamp64\www\site_final\admin\admin.php on line 40
( ! ) Error: Call to a member function prepare() on null in C:\wamp64\www\site_final\admin\admin.php on line 40

aidez moi svp

2 réponses

thugg, il y a 6 ans

Bonsoir,
je pense que ton problème vient des simples quotes autour de tes variables
essaie:

$insert = $db -> prepare ("INSERT INTO article VALUES ( '',$titre,$description, $prix)"); $insert->exec(); // Ceci devrait marcher aussi sous mysql... ( où l'accent grave est le séprateur de colonne en lieu et place des simples quotes de ta requête initiale) $insert = $db -> prepare ("INSERT INTO article VALUES ( `''`,`$titre`,`$description`,` $prix`)"); $insert->exec();

Tu peux essayer en précisant les champs dans ta requête insert correspondant aux valeurs que tu souhaites ajouter : INSERT INTO Matable ( le_nom_du champs1, le nom du champs2 etc...) VALUES (ma_valeur1, ma_valeur2 etc... ) . Dans ton exemple, je ferais quelquechose comme :

$insert = $db->prepare('INSERT INTO article (titre, description, prix) VALUES (?, ?, ?)'); $insert->execute([ $_POST['titre'], $_POST['description'],$_POST['prix'] ]);
Soundboy39, il y a 6 ans

Heu... "Undefined variable: db"
On peut guère faire plus claire... et donc comme "prepare()" est une méthode d'un objet, mais que la variable $db n'est pas un objet puisqu'elle n'existe pas... ben forcément çà fonctionne pas.

Je pense que tu devrais également prendre connaissance de la documentation de la class PDO pour bien l'utiliser : https://www.php.net/manual/fr/book.pdo.php

Bonne continuation