2009-12-27 4 views
1

Я хочу создать таблицу для создания окна комментариев. Мне сказали, что я должен опасаться внедрения sql (даже не знаю, что это значит).Создать запрос таблицы

Так что я подумал, что я должен спросить вокруг. мои требования:

Комментарии таблица

  1. комментарий по рядка ~ 400 символов
  2. помощь -> каждый комментарий должен быть связан с помощью. дубликаты должны быть разрешены. означает помощь = 21, может иметь более 1 комментария. Я должен иметь возможность искать через БД, чтобы увидеть все комментарии, связанные с помощью = 21.
  3. timestamp для комментариев
  4. userid для комментария.

Запрос MySQL для указанной выше таблицы, который не должен допускать SQL-инъекции. Я довольно смущен. Любая помощь будет высоко оценен. Заранее большое спасибо.

ответ

3

Создание таблицы обычно происходит только один раз, когда система установлена. Поэтому нет риска SQL injection (что происходит, когда запрос выполняется с данными, предоставленными пользователем).

Приведенное выше описание, вероятно, будет реализована как:

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

не печатает временную метку. т.е. текущее время. его печать 0000-0000 .... также комментарий_text не обновляется. его null. – amit

+0

Как правило, не рекомендуется использовать зарезервированные слова SQL в качестве идентификаторов (например, имена таблиц или столбцов). Хотя слово «комментарий» отсутствует в стандарте SQL (см. Http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt), это зарезервированное слово для DB2 (см. Таблицу 2 из http://publib.boulder.ibm.com/infocenter/db2e/v8r2/index.jsp?topic=/com.ibm.db2e.doc/db2eresword.html) – Glenn

+0

Запрос создания таблицы предназначен для создания таблицы, а не печатать что угодно. Вы можете задать вопрос, связанный с вашими запросами, для чтения данных. –

1

Попробуйте использовать stored procedures в mysql.

Используйте параметры для передачи ввода в хранимую процедуру.

0

инъекции SQL объясняется в Википедии и в других местах.

Использование mysql_real_escape_string() или stored procedures - это стандартные методы, которые позволят избежать SQL-инъекций.

Смежные вопросы