PHP/MYSQL requête de mise à Jour ne fonctionne pas
Quelqu'un peut dire à mes pourquoi cette requête de mise à jour ne fonctionne pas?
if ($_GET['update']) {
include 'config.php';
//Connect to MYSQL Database server
$connect = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Could not connect to MYSQL Database.");
$result = mysql_select_db(DB_NAME, $connect) or die("Could not connect to MYSQL table.");
mysql_query("UPDATE contact SET read = 1 WHERE id = '$_GET[update]'")or die("Query failed.");
echo "Update works!";
} else {
echo "Update does not work...ughh.";
}
Vous en remercie d'avance.
Edit: j'ai reçu la requête de travailler. Pour toute personne qui a été de s'inquiéter de la sécurité, j'ai été en utilisant ce script comme un test pour voir si je voulais l'utiliser. J'ai juste ajouté de la sécurité maintenant que le script fonctionne. Merci à vous tous pour l'aide et des conseils.
N'étaient pas ici pour le code de débogage, erreur qui êtes-vous?
OriginalL'auteur Sephiroth | 2012-06-06
Vous devez vous connecter pour publier un commentaire.
Qu'est-ce que la colonne de lire?
À en juger par la non-capitalisation de lire, je suppose que vous utilisez un mot réservé à MySQL pour cette colonne.
Voir:
Les Mots réservés dans MySQL
Pour contourner ce problème, il suffit de mettre des guillemets simples autour de la lecture. I. E.
Ou mieux par j.bruni:
Le manuel recommande de "backtick" caractère à la place des guillemets.
J. Bruni est correcte, utilisez la backtick caractère au lieu.
Merci Une Tonne Bro! était coincé avec "match" (Apparemment un mot-clé ) 😛
OriginalL'auteur spitfire
Essayez ceci pour votre ligne de requête:
Remarquer le changement de la
die()
déclaration pour une meilleure gestion des erreurs:*Aussi, juste un avis, vous devriez vraiment sortir variables utilisateur (par exemple, OBTENIR des variables) comme pour empêcher les injections SQL:
Merci de faire un rapport sur le résultat.
Cela ne fonctionne pas.
Je n'ai pas ajouté de sécurité encore!
Pourquoi le code de tout, puis ajouter la sécurité, cela ressemble à beaucoup de travail pour revenir en arrière et faire plus, pourquoi ne pas le faire dès la première fois?
Merlin l'effort apporté le message d'erreur; Nick a donné la bonne réponse; spitfire a obtenu le crédit et accumulé les points; on peut considérer qu'il est juste, puisque c'est sa première participation dans le site.
OriginalL'auteur themerlinproject
Je crois que vous avez besoin pour échapper à la chaîne d'avoir $_GET['jour'] pour ajouter de la valeur à la chaîne. Mais vous devez vraiment être à l'aide de déclarations préparées moins vous être attaqué par des utilisateurs malveillants.
Préparées: http://php.net/manual/en/pdo.prepared-statements.php
OriginalL'auteur richardhsu
READ
est un mot réservé. Vous avez besoin de le mettre dans les backticks ou de renommer votre domaine.Prendre un coup d'oeil à ce lien:
http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
+1 car nous avons finalement eu le message d'erreur 🙂
OriginalL'auteur Nicola Cossu
Vous pouvez tester si
si ce n'est pas le problème spécifique
OriginalL'auteur Sam
S'il vous plaît essayez de ne pas utiliser le mysql_query. Il est vieux et il n'est pas efficace. pourquoi ne pas essayer d'apprendre à propos de l'AOP et la préparation des états financiers .. ?
OriginalL'auteur Othman