2013-06-07 2 views
0

Я создал простой форум, в который вы можете входить, чтобы добавлять сообщения. У меня есть таблица пользователей и таблица тем. Когда вы публикуете поток, он отправляет информацию в таблицу тем, содержащую идентификатор, заголовок, сообщение, дату и имя пользователя. Проблема в том, что я могу отправлять сообщения только при входе в систему с именем пользователя, содержащим только цифры. Я заметил, что у меня было имя topic_by (имя пользователя) в INT, которое я изменил на VARCHAR. Это не исправило проблему, хотя, она по-прежнему работает только в том случае, если у вас есть только цифры в вашем имени пользователя. Если вы пытаетесь опубликовать с именем, содержащим букву в следующей строке показывается:«Неизвестный столбец в полевом списке» при попытке опубликовать сообщение

указан столбец «ASD» в «списке поля»

Я попытался удалить и переделать таблицу.

Это код, который посылает данные:

$sql="INSERT INTO $tbl_name(topic_id, topic_title, topic_message, topic_date, topic_by) 
     VALUES ('NULL', '$title', '$message', '$datetime', ".$_SESSION["username"].")"; 

При регистрации учетной записи он отправляет данные в таблице пользователей, включая user_name и который работает с буквами и/или цифрами, даже если topic_by строка имеет те же свойства.

ответ

2

Это потому, что вы пытаетесь вставить ".$_SESSION["username"]." без окружающих с кавычками ', которые необходимы, так как это не целое поле. Это позволит вашей базе данных понять ваш фактический username в качестве столбца. Просто используйте цитату '".$_SESSION["username"]."'.

Так что ваш код будет выглядеть

$sql="INSERT INTO $tbl_name (topic_id, topic_title, topic_message, topic_date, topic_by) VALUES ('NULL', '$title', '$message', '$datetime', '".$_SESSION["username"]."')"; 

Во всяком случае я бы настоятельно рекомендую вам использовать prepared statements, чтобы избежать угроз безопасности, вы можете прочитать хороший учебник о PDOhere

+1

Нет, пожалуйста, сделайте не изменяйте свой код. Получите некоторую переменную фильтрацию там ради безопасности! Ты просто просишь дело с Бобби Столз. И нет, PDO - это не волшебная таблетка для всех смертельных случаев. –

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