2012-05-01 4 views
-1

Привет, я новичок в PHP, и я пытаюсь ввести данные в мою базу данных. Я пытаюсь ввести имя события, которое пользователь вводит (POST), и имя пользователя зарегистрированного пользователя.Вставьте переменную сеанса в базу данных MySQL

Я создал сессии для хранения пользователей имен пользователей, код я имею

$eventname=$_POST['eventname']; 
$myusername = $_SESSION['myusername'] 

$sql = mysql_query("INSERT INTO $tbl_nameVALUES('','$eventname','$_SESSION['myusername'])"); 

echo "You have been added to the event"; 

Свы $ SQL Statement, выдающая ошибку? Любая помощь приветствуется.

Спасибо всем!

+1

Было бы лучше, если вы также дали сообщение об ошибке ! Это похоже на синтаксическую ошибку, с которой я стою. pollirata и Micheal ответили на этот вопрос в глубину. – Malovich

+1

Ваш SQL-запрос уязвим для SQL-инъекции. – Lion

+3

Пожалуйста, прекратите писать новый код с помощью древних 'mysql_ *' функций. Они больше не поддерживаются, и сообщество начало процесс [устаревания] (http://news.php.net/php.internals/53799). Вместо этого вы должны узнать о [подготовленных заявлениях] (http://en.wikipedia.org/wiki/Prepared_statement) и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http: // php.net/mysqli). Если вы хотите узнать, [здесь довольно хороший учебник по PDO] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). –

ответ

7

Здесь есть несколько потенциальных проблем.

Во-первых, у вас не сбежал eventname против SQL-инъекции. Мы надеемся, что myusername уже безопасен. Если он не был предварительно отфильтрован, используйте также mysql_real_escape_string() на $_SESSION['myusername'].

$eventname = mysql_real_escape_string($_POST['eventname']); 

// Then you need space before VALUES and are missing a closing quote on $_SESSION['myusername'], which should be in {} 
$sql = mysql_query("INSERT INTO $tbl_name VALUES('','$eventname','{$_SESSION['myusername']}')"); 

Наконец, для того, чтобы заявление на работу, он предполагает, что вы ровно три столбца в $tbl_name. Вы должны четко указывать используемые столбцы. Замените правильные имена столбцов на colname1, event_name, username.

$sql = mysql_query("INSERT INTO $tbl_name (colname1, event_name, username) VALUES('','$eventname','{$_SESSION['myusername']}')"); 

Точные места ошибок синтаксиса SQL будет показан вам с некоторой базовой проверки ошибок с помощью mysql_error().

$sql = mysql_query(<your insert statement>); 
if (!$sql) { 
    echo mysql_error(); 
} 
+0

Я внес изменения, которые вы указали, в сообщении об ошибке указано непредвиденное значение T_VARIABLE, я знаю, что это синтаксическая ошибка. – user1368371

+0

Если у вас есть непредвиденная 'T_VARIABLE' строка' $ eventname', у вас, вероятно, есть синтаксическая ошибка в строке _before_, которая, как и отсутствующая ';'. –

+0

Точно правильно Майкл! спасибо за помощь всем! – user1368371

0

Вам необходимо заполнить поле между $tbl_name и VALUES, и действительно ' после $_SESSION['myusername'].

Ищите инъекцию SQL.

1

Вам не хватает ' в своем заявлении о вставке. Попробуйте это

INSERT INTO $tbl_name VALUES('','$eventname','$_SESSION['myusername']') 
0

Удалить одиночные кавычки ключа в вашем $_SESSION массиве:

$sql = mysql_query("INSERT INTO $tbl_name VALUES('', '$eventname', '$_SESSION[myusername])"); 
0

Надеется, что это поможет ...

$eventname=$_POST['eventname']; 
$myusername = $_SESSION['myusername']; 

$sql = mysql_query("INSERT INTO tbl_name VALUES('','$eventname','".$_SESSION['myusername'])."'"); 

echo "You have been added to the event"; 
Смежные вопросы