Bonjour Je rencontre un problème avec mon code actuellement.
Et si y'a quelqu'un qui peut m'aider, sa me ferait vraiment plaisir .
Le problème est le suivant :
Je veux modifier mes données qui se trouve dans la base de données.
Donc j'ai créer une page de code mais j'ai une erreur de PDO :: query (): SQLSTATE [HY000]: qui s'affiche.
j'arrive pas à voir l'erreur...
Et merci à l'avance
PAGE(modificateur.php)
Cela est mon code quand j'aterris sur la page pour procéder à la modification de mes données.
<?php
// SCRIPT DE CONNEXION
$hote ="localhost";
$nombasededonnees ="comptable";
$utilisateur ="comptable";
$motdepasse ="NPYyYc4kngx5gRJ6";
$charset ="utf8mb4";
$sourcedeconnection ="mysql:host=$hote;dbname=$nombasededonnees;charset=$charset";
try{
$pdo = new PDO($sourcedeconnection, $utilisateur, $motdepasse);
echo "";
}
catch(PDOException $erreur){
throw new PDOException($erreur->getMessage(), (int)$erreur->getCode());
}
$resultat = $pdo->query("SELECT * FROM messagerie WHERE message='" . $_GET["message"] . "'", $sourcedeconnection);
if($resultat){
echo "<h1>Utilisateur</h1>\n";
$affiche = mysql_fetch_array($resultat);
echo"<from action='history.php'method='POST'>";
echo"<table border='1'>\n";
echo"<tr>\n";
echo"<td><strong>Prenom</strong></td>\n";
echo"<td><input type='text'name='nom' value='" . $affiche["nom"] ."'/></td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td><input type='text' name='prenom' value='" . $affiche["prenom"] ."'/></td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td><input type='text' name='message' value='" . $affiche["message"] ."'/></td>\n";
echo"</tr>\n";
echo"</table>\n";
}
?>
PAGE(index.php)
Cela est mon code qui me permettra de me rendre à la page de la procédure de modification de mes données.
( ce qui veut dire, une connexion à la base de donnée, l'affichage des données, le lien qui permettra de se rendre à la base de donnée...
<?php
// SCRIPT DE CONNEXION
$hote ="localhost";
$nombasededonnees ="comptable";
$utilisateur ="comptable";
$motdepasse ="NPYyYc4kngx5gRJ6";
$charset ="utf8mb4";
$sourcedeconnection ="mysql:host=$hote;dbname=$nombasededonnees;charset=$charset";
try{
$pdo = new PDO($sourcedeconnection, $utilisateur, $motdepasse);
echo "";
}
catch(PDOException $erreur){
throw new PDOException($erreur->getMessage(), (int)$erreur->getCode());
}
// Requete relier a la page modificateur.php qui permet de modifier les donner arriver sur cette page ci.
if(isset($_POST["modifier"])){
$requete = $pdo->exec("UPDATE messagerie SET message" . $_POST['message']);
$resultat = $pdo->query($requete,$sourcedeconnection);
if(!$resultat){
echo"erreur dans lexecution de la requete </br>";
echo"le message derreur est : " . my_error($sourcedeconnection);
}
}
// AFFICHAGE DES DONNEES DANS UN TABLEAU
$resultat = $pdo->query('SELECT * FROM messagerie ORDER BY id');
echo'<table border>
<tr>
<th>ID</th>
<th>NOM</th>
<th>PRENOM</th>
<th>MESSAGE</th>
<th>DATE
<a href="">ordre croissant</a>
<a href="">ordre decroissant</a>
</th>
<th>HEURE</th>
<th></th>
</tr>';
while($affiche = $resultat->fetch()){
echo"<tr>\n";
echo "<td>".$affiche['id']."</td>\n";
echo "<td>".$affiche['nom']."</td>\n";
echo "<td>".$affiche['prenom']."</td>\n";
echo "<td>".$affiche['message']."</td>\n";
echo "<td>".$affiche['date']."</td>\n";
echo "<td>".$affiche['heure']."</td>\n";
echo "<td><a href='modificateur.php?message=" . $affiche["message"]." '>Modifier</a></td>\n";
echo"</tr>\n";
}
echo "</table>\n";
?>
Attention: PDO :: query (): SQLSTATE [HY000]: Erreur générale: le mode doit être un entier dans C: \ wamp \ www \ TP1 \ modificateur.php à la ligne 27 Cela s'affiche que pour la page (modificateur.php)
Hello,
de ce que je vois il n'y a pas les quotes sur tes variables dans ton instanciation de ta BDD
Essaie ça
$pdo = new PDO('$sourcedeconnection', '$utilisateur', '$motdepasse');
Je sais pas si ça peux résoudre ton problème, mais t'utilise une fonction mysql mysql_fetch_array($valeur)
au lieu de $reponse = $requete->fetchAll()
Bonjour,
L'erreur complète est ?
Je t'invite à apprendre l'utilisation des requêtes préparées car ça va sécurité tes réquêtes et éviter les injections SQL ensuite si tu as la moindre ' ou " dans une variable, ce l'échappera et évitera de faire planter la requête
Salut,
$resultat = $pdo->query($requete,$sourcedeconnection);
Le deuxième paramètre de la méthode query n'attend pas ta connection string, mais un entier représentant le mode de "fetch"
d'où l'erreur qui t'es retournée.
https://www.php.net/manual/fr/pdo.query.php
j'ajouterai qu'il manquerait un "=" a la requête de modification que tu passes
requete = $pdo->exec("UPDATE messagerie SET message = " . $_POST['message']);
+1 pour les requêtes préparées : https://www.php.net/manual/fr/pdo.prepared-statements.php
Cela ne fonctionne pas !
Mais JeepayJipex !
Quand vous dites :
Le deuxième paramètre de la méthode query n'attend pas ta connection string, mais un entier représentant le mode de "fetch"
d'où l'erreur qui t'es retournée...
Vous voulez dire quoi pas là ?
Merci pour vos réponse !
Il parle de cette instruction $resultat = $pdo->query($requete,$sourcedeconnection)
, tu ne dois pas mettre de second paramètres, supprime le, de base le second paramètre c'est fetch style, mais t'en a pas besoin dans ce cas, donc t'as juste a supprimer $sourcedeconnection
de ta requete.
source: https://www.php.net/manual/fr/pdo.query.php
Ah d'accord je vois.
Merci pour le lien
Je ne l'avais pas lu auparavant
Je vais essayer cela pour voir !