Dans mon form j'ai un input qui sert a enregistrer le trade link (de steam) dans ma base de données, j'ai donc fais ca :
<!-- Php traitement trade link -->
<?php if (isset($_POST['sub'])) {
$trade = $_POST['trade'];
if (isset($_POST['trade'])) {
$reqInsert = $bdd->prepare('INSERT INTO membre(link) VALUES (:link) WHERE pseudo = $_SESSION[\'pseudo\']');
$reqInsert->execute([':link' => $trade, ]);
}
else {
echo 'Error saving your trade link';
}
}
?>
et
<!-- Input pour son trade link -->
<form method="POST" action="">
<label for="tradelink">Set your trade link: <a href="https://steamcommunity.com/id/lenny74/tradeoffers/privacy#trade_offer_access_url" target="_blank">(find it here)</a> :</label><br />
<?php if (!empty($donnees['link'])) {
echo '<input type="text" name="trade" id="tradelink" value="'.htmlspecialchars($donnees['link']).'" pattern="https:\/\/steamcommunity\.com\/tradeoffer\/new\/\?partner=[0-9]{9}&token=[A-Za-z0-9]{8}" />';
}
else {
echo '<input type="text" name="trade" id="tradelink" pattern="https:\/\/steamcommunity\.com\/tradeoffer\/new\/\?partner=[0-9]{9}&token=[A-Za-z0-9]{8}" />';
}
}?>
<input type="submit" class="tradesend" name="sub" value="Change" />
</form>
Le problème se situe ligne 21 :
$reqInsert = $bdd->prepare('INSERT INTO membre(link) VALUES (:link) WHERE pseudo = $_SESSION[\'pseudo\']');
Je n'arrive pas a faire correctement ma requête avec le insert into values where, et je suis obligé de mettre where sinon ca me créer un autre ligne dans ma base de données (alors que je veux juste mettre à jour le trade de l'utilisateur). Merci pour votre aide :)
"Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas." - Thomas Edison
Tu utilises une requête préparer c'est très bien alors continu et insère ton $_session de la même sorte car là vu que ta requête est un ' (simple quote), il n'est pas interprété.
Tu utilises une requête préparer c'est très bien alors continu et insère ton $_session de la même sorte car là vu que ta requête est un ' (simple quote), il n'est pas interprété.
En fait le session pseudo ne va pas être inséré c'est juste pour que le trade link soit inséré dans la bonne ligne de ma bdd (la ligne avec le pseudo/mail/mdp de l'utilisateur).
Comme ca c'est bon ? :
$reqInsert = $bdd->prepare('INSERT INTO membre(link) VALUES (:link) WHERE pseudo = $donnees[pseudo]');
"Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas." - Thomas Edison
$reqInsert = $bdd->prepare('INSERT INTO membre(link) VALUES (:link) WHERE pseudo = :pseudo');
$reqInsert->execute([':link' => $trade, ':pseudo' => $_SESSION['pseudo']]);
Ah oui ok ahah j'avais pas compris x)
Par contre ca me met ca ? Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE pseudo = ?' at line 1 in /storage/ssd1/730/4671730/public_html/profile.php:21 Stack trace: #0 /storage/ssd1/730/4671730/public_html/profile.php(21): PDO->prepare('INSERT INTO mem...') #1 {main} thrown in /storage/ssd1/730/4671730/public_html/profile.php on line 21
- Edité par tycyly 20 février 2018 à 23:43:34
"Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas." - Thomas Edison
Salut, Comme t'as dis <<mise à jour >> il faudra utiliser "UPDATE" dans ce cas
<!-- Php traitement trade link -->
<?php if (isset($_POST['sub'])) {
$trade = $_POST['trade'];
if (isset($_POST['trade'])) {
$req = $bdd->prepare("UPDATE membre SET link = :link WHERE pseudo = :pseudo");
/* ATTENTION l'utilisation des <<:>> correspond à l'utilisation de paramètres nommés, donc bindParam sera nécessaire */
$req->bindParam(":link",$trad,PDO::PARAM_STR);
$req->bindParam(":pseudo",$_SESSION["pseudo"],PDO::PARAM_STR);
$req->execute();
//en option, si ça a marché ou pas
//retourne le nombre de lignes affectées
//retournera 0 si rien n'a marché
// retournera 1 si une ligne a été insérée
// retournera 2 si 2 lignes insérées
//etc
$nb = $req->rowCount();
//ne pas oublier de fermer la requête
$req->closeCursor();
}
else {
echo 'Error saving your trade link';
}
}
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
"Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas." - Thomas Edison
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
"Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas." - Thomas Edison
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
"Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas." - Thomas Edison
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
"Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas." - Thomas Edison
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales