Requête PDO dans une base donnée

Petit nouveau ! | 1 Messages

07 janv. 2022, 12:51

Bonjour tout le monde,

J'ai un problème sur un projet que je fait j'espère que vous pourrez m'aider :P , je vous explique tout ça:

J'ai deux tables contenues dans une base de donnée et j'aimerais copier une adresse mail contenue dans ma première base "user" pour la mettre dans la seconde "booking" , sachant que j'ai recréé une colonne email du même nom que pour la première base.
J'ai donc fait ma requête après m'être connecté à la base, mais j'ai une erreur de syntaxe que je n'arrive pas à élucider


Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de '@hotmail .com)' à la ligne 1 in E:\Site\wamp64\www\V2\verif-form.php on line 70


:|

Voici le code:

Code : Tout sélectionner

<?php try { $bdd = new PDO("mysql:host=localhost;dbname=song", "root", ""); $bdd ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(Exception $e) { die("Une érreur a été trouvé : " . $e->getMessage()); } $bdd->query("SET NAMES UTF8"); if (isset($_GET["s"]) AND $_GET["s"] == "Rechercher") { $_GET["terme"] = htmlspecialchars($_GET["terme"]); //pour sécuriser le formulaire contre les failles html $terme = $_GET["terme"]; $terme = trim($terme); //pour supprimer les espaces dans la requête de l'internaute $terme = strip_tags($terme); //pour supprimer les balises html dans la requête } if (isset($terme)) { $terme = strtolower($terme); $select_terme = $bdd->prepare("SELECT Title, Artist, Genre, Album, Year FROM music WHERE Available = 1 AND Title LIKE ? OR Artist LIKE ? OR Year LIKE ? OR Genre LIKE ? OR Album LIKE ?"); $select_terme->execute(array("%".$terme."%", "%".$terme."%", "%".$terme."%", "%".$terme."%", "%".$terme."%")); } else { $message = "Vous devez entrer votre requete dans la barre de recherche"; } ?> <!DOCTYPE html> <html> <head> <meta charset = "utf-8" > <title>Les résultats de recherche</title> <link rel="stylesheet" href="style2.css"> <body style="background-color:black";> </head> <body> <?php while($terme_trouve = $select_terme->fetch()) { echo "<center><div><h2>".$terme_trouve['Title']."</h2><p>".$terme_trouve['Artist']."</p><p>".$terme_trouve['Genre']."</p><p>".$terme_trouve['Album']."</p><p>".$terme_trouve['Year']."</p></center>s"; $Artist = $terme_trouve['Artist']; $Title = $terme_trouve['Title']; } $select_terme->closeCursor(); ?> <center> <form action = "Ma bibliothèque.php" method = "get"> <input type = "submit" name = "s" value = "Ajouter au panier"> <?php $Result = $bdd->query ("SELECT * FROM user WHERE `Statut` = '1' "); $Resultat = $Result->fetch(); $sql = " INSERT INTO booking (Title, Artist, email) VALUES ('$Title','$Artist',".$Resultat['email'].")"; $ajout = $bdd->prepare($sql); $ajout->execute(); ?> </form> </center> <center> <form action = "page_principale.php" method = "get"> <input type = "submit" name = "s" value = "retour"> </form> </center> </body> </html>

Mammouth du PHP | 2055 Messages

07 janv. 2022, 14:04

utiliser les requêtes préparées comme pour le select résoudrait le problème et d'autres problèmes à venir.

sinon, pourquoi avoir mis '$Title' et pas $Title ?