PDO Requêtes préparées
fab1105
Messages postés
118
Statut
Membre
-
fab1105 -
fab1105 -
Bonjour, j'ai un petit soucis avec une requête qui ne fonctionne pas et j'aurai bien besoin d'un petit coup de main.
Voici le code qui ne marche pas :
et voici le code de la page entière si besoin, mais la seul requête qui ne marche pas est celle citée ci-dessus.
Voici le code qui ne marche pas :
$req = $bdd->prepare("INSERT INTO commentaires (pseudo,contenu,article_id) VALUES (:pseudo,:comment,:article_id)") or die(print_r($bdd->errorInfo()));
$req->execute(array(
'pseudo'=>$pseudo,
'comment'=>$comment,
'article_id'=>$p
));
$req->closeCursor();
et voici le code de la page entière si besoin, mais la seul requête qui ne marche pas est celle citée ci-dessus.
<?php
if(empty($_GET))
{
header("Location: index.php");
}
if(!empty($_GET))
{
require_once("id_connection.php");
extract($_GET);
$p = strip_tags($p);
}
try
{
$bdd = new PDO('mysql:host='.$dbhost.';dbname='.$dbname,$dblogin,$dbpass);
$bdd->exec('SET NAMES utf8');
}
catch (Exeption $e)
{
die('Erreur :'.$e->getMessage());
}
$req=$bdd->prepare("SELECT titre FROM articles WHERE id=:id");
$req->execute(array(
"id"=>$p
));
if($req->rowCount()==0)
{
header("Location: index.php");
}
$data = $req->fetch();
$titre = $data['titre'];
$req->closeCursor();
if(!empty($_POST))
{
extract($_POST);
$valid = true;
if(empty($pseudo))
{
$valid = false;
$erreurpseudo = "Pseudo requis";
}
if(empty($comment))
{
$valid = false;
$erreurcomment = "Laissez vos commentaires";
}
if($valid)
{
$pseudo=strip_tags($pseudo);
$comment=strip_tags($comment);
//Ne fonctionne pas
$req = $bdd->prepare("INSERT INTO commentaires (pseudo,contenu,article_id) VALUES (:pseudo,:comment,:article_id)") or die(print_r($bdd->errorInfo()));
$req->execute(array(
'pseudo'=>$pseudo,
'comment'=>$comment,
'article_id'=>$p
));
$req->closeCursor();
unset($pseudo);
unset($comment);
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $titre;?></title>
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
</head>
<body>
<div id="content">
<?php
$req=$bdd->prepare("SELECT * FROM articles WHERE id=:id");
$req->execute(array(
"id"=>$p));
$data = $req->fetch();
echo "<h2>".$data['titre']."</h2>";
echo "<div class=\"articles\">";
echo "<p>".$data['contenu']."</p>";
echo "<p class=\"date\">".date('j/n/Y G:i',strtotime($data['date']))."</p>";
$req->closeCursor();
?>
<div class="form">
<form name="commenter" action="article.php?p=<?php echo $data['id']; ?>" method="post">
<label for="pseudo">Pseudo :</label>
<input type="text" name="pseudo" value="<?php if(isset($pseudo)) echo $pseudo; ?>" />
<span class="error"><?php if(isset($erreurpseudo)) echo $erreurpseudo; ?></span>
<label for="comment">Commentaires :</label>
<textarea name="comment"><?php if(isset($comment)) echo $comment; ?></textarea>
<span class="error"><?php if(isset($erreurcomment)) echo $erreurcomment; ?></span>
<input type="submit" name="envoyer" value="Envoyer" />
</form>
</div>
<?php
$req=$bdd->prepare("SELECT * FROM commentaires WHERE article_id=:article_id");
$req->execute(array(
"article_id"=>$p));
while( $data = $req->fetch())
{
echo "<p>".$data['pseudo']."</p>";
echo "<p>".$data['contenu']."</p>";
}
?>
</div>
</div>
</body>
</html>
A voir également:
- PDO Requêtes préparées
- Les requetes - Forum Programmation
- Requetes SQL - Forum Access
- Réessayez plus tard il est possible que votre ordinateur ou votre réseau envoie des requêtes automatiques. pour la sécurité de nos utilisateurs, nous ne pouvons pas traiter votre demande pour le moment. pour en savoir plus, consultez notre page d'aide. valider - Forum Virus
- Windev pb de requêtes ✓ - Forum Windev
- De jointures à Sous-requêtes - Forum MySQL
3 réponses
Salut essaye sa :
$req = $bdd->prepare("INSERT INTO commentaires ('pseudo', 'contenu', 'article_id') VALUES (:pseudo,:comment,:article_id)") or die(print_r($bdd->errorInfo()));
$req->execute(array(
'pseudo'=>$pseudo,
'comment'=>$comment,
'article_id'=>$p
));
$req->closeCursor();
J'ai eu quasiment le même problème que toi. j'avais oublier les ' autour du nom des champs.
$req = $bdd->prepare("INSERT INTO commentaires ('pseudo', 'contenu', 'article_id') VALUES (:pseudo,:comment,:article_id)") or die(print_r($bdd->errorInfo()));
$req->execute(array(
'pseudo'=>$pseudo,
'comment'=>$comment,
'article_id'=>$p
));
$req->closeCursor();
J'ai eu quasiment le même problème que toi. j'avais oublier les ' autour du nom des champs.