2009-12-27 5 views
1

Je veux créer une table pour faire une boîte de commentaires. On m'a dit que je devrais me méfier de l'injection de sql (ne sait même pas ce que cela signifie).Créer une requête de table

Alors j'ai pensé que je devrais demander autour de SO. mes exigences sont les suivantes:

Commentaires Table

  1. un commentaire ligne 400 ~ caractères
  2. aide
  3. -> tous les commentaires doivent être liées à une aide. les doublons devraient être autorisés. signifie aide = 21, peut avoir plus d'un commentaire. Je devrais être capable de rechercher dans la base de données pour voir tous les commentaires liés à l'aide = 21.
  4. timestamp pour le commentaire
  5. userid pour le commentaire.

Une requête MySQL pour la table ci-dessus qui ne devrait pas autoriser l'injection SQL. Je suis assez confus. Toute aide serait très appréciée. Merci beaucoup d'avance.

Répondre

3

La création d'une table se produit généralement une seule fois, lorsque le système est installé. Il n'y a donc aucun risque de SQL injection (ce qui se produit lorsqu'une requête est exécutée avec des données fournies par l'utilisateur).

La description ci-dessus serait probablement mis en œuvre comme:

CREATE TABLE `comment` ( 
    `comment_id` INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `comment_text` VARCHAR(400) NOT NULL, 
    `aid_id` INTEGER NOT NULL REFERENCES `aid`(`aid_id`), 
    `comment_time` DATETIME NOT NULL, 
    `user_id` INTEGER NOT NULL REFERENCES `user`(`user_id`) 
); 
+0

il n'imprime pas l'horodatage. c'est-à-dire, l'heure actuelle. son impression 0000-0000 .... aussi le comment_texte ne met pas à jour. son null. – amit

+0

Il est généralement recommandé de ne pas utiliser les mots réservés SQL en tant qu'identifiants (c'est-à-dire les noms de table ou de colonne). Bien que le mot "comment" ne soit pas dans la norme SQL (voir http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt), il s'agit d'un mot réservé pour DB2 (voir le tableau 2 de http://publib.boulder.ibm.com/infocenter/db2e/v8r2/index.jsp?topic=/com.ibm.db2e.doc/db2eresword.html) – Glenn

+0

Une requête de création de table est destinée à créer une table, non pour imprimer n'importe quoi. Vous voudrez peut-être poser une question liée à vos requêtes pour lire les données. –

1

Essayez et utilisez stored procedures dans mysql.

Utilisez les paramètres pour transmettre l'entrée à la procédure stockée.

Questions connexes