2013-03-13 3 views
0

Ниже эхо заявления,базы данных Ошибка вставки

$statement = "INSERT INTO $tbl_name VALUES(" . $_GET['username'] . "," . $_GET['password'] . "," . $_GET['PasswordHintQuestion'] . "," . $_GET['PasswordHintAnswer'] . "," . $_GET['firstname'] . "," . $_GET['lastname'] . "," . $_GET['genderSelect'] . "," . $_GET['date_in_format'] . "," . $_GET['nationality'] . "," . $_GET['refEmail'] . ")" ; 
echo $statement; 

дали вывод как,

INSERT INTO ge_user_table VALUES([object HTMLInputElement],[object HTMLInputElement],[object HTMLInputElement],[object HTMLInputElement],[object HTMLInputElement],[object HTMLInputElement],[object NodeList],[object HTMLSelectElement]/[object HTMLSelectElement]/[object HTMLSelectElement],[object HTMLInputElement],[object HTMLInputElement])Database Insertion fault on registration 

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

У вас есть ошибка в синтаксисе SQL; в руководстве, соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать вблизи '[объект HTMLInputElement], [объект HTMLInputElement], [объект HTMLInputElement], [о' в строке 1

Но, ниже запрос работает нормально.

INSERT INTO ge_user_table VALUES('Muthu2','1234','Who are you?','Iam Indian','Muthu','Ganapathy','MALE','1991-12-21','Indian','[email protected]'); 

EDIT: Я изменил код на,

$username  = mysql_escape_string($_GET['username']); 
    $password  = mysql_escape_string($_GET['password']); 
    $hintQues  = mysql_escape_string($_GET['PasswordHintQuestion']); 
    $hintAns  = mysql_escape_string($_GET['PasswordHintAnswer']); 
    $firstname = mysql_escape_string($_GET['firstname']); 
    $hintQues  = mysql_escape_string($_GET['lastname']); 
    $gender  = mysql_escape_string($_GET['genderSelect']); 
    $date   = mysql_escape_string($_GET['date_in_format']) ; 
    $nationality = mysql_escape_string($_GET['nationality']) ; 
    $email  = mysql_escape_string($_GET['refEmail']) ; 



    $statement = "INSERT INTO $tbl_name VALUES('$username' ,'$password','$hintQues' ,'$hintAns','$firstname' ,'$lastname' ,". 
       "'$gender' ,'$date','$nationality','$email')" ; 

Но запись, база данных имеет, как, enter image description here

Окончательное решение: Я прошел form.username в html вместо form.username.value. Теперь это правильно.

+3

Surprise, строки в SQL должны быть заключены в кавычки. –

+3

вам нужно изучить базовый синтаксис SQL. Строковое форматирование в частности. строки в SQL должны быть указаны ** и экранированы. ** –

+1

[Великий эскапизм (или: что вам нужно знать для работы с текстом внутри текста)] (http://kunststube.net/escapism/) – deceze

ответ

2

Похоже, что у вас есть ошибка в javascript. вы отправляете html DOM Node вместо значения.

Кроме того, вы должны бежать переменные ПОЛУЧИТЬ как

mysql_real_escape_string($_GET['username']); 
+0

+1 as это еще одна ошибка, в дополнение к форматированию SQL (неверно) –

+0

не «получаемые переменные», а «строки SQL». –

+0

@jcubic см. В редакции. –

0

синтаксис SQL неправильно вы можете использовать mysql_real_escape_string, но вы также должны заботиться о том, как вы передаете значения SQL.

В приведенном выше запросе вы пропустили текст без кавычек.

$statement = "INSERT INTO $tbl_name VALUES('".$_GET['username']."', '".$_GET['password']."', '".$_GET['PasswordHintQuestion']."', '".$_GET['PasswordHintAnswer']."', '".$_GET['firstname']."', '".$_GET['lastname']."', '".$_GET['genderSelect']."', '".$_GET['date_in_format']."', '".$_GET['nationality']."', '".$_GET['refEmail']."')" ; 
1

TRY ЭТО

$username  = mysql_escape_string($_GET['username']); 
    $password  = mysql_escape_string($_GET['password']); 
    $hintQues  = mysql_escape_string($_GET['PasswordHintQuestion']); 
    $hintAns  = mysql_escape_string($_GET['PasswordHintAnswer']); 
    $firstname = mysql_escape_string($_GET['firstname']); 
    $hintQues  = mysql_escape_string($_GET['lastname']); 
    $gender  = mysql_escape_string($_GET['genderSelect']); 
    $date   = mysql_escape_string($_GET['date_in_format']) ; 
    $nationality = mysql_escape_string($_GET['nationality']) ; 
    $email  = mysql_escape_string($_GET['refEmail']) ; 



    $statement = "INSERT INTO $tbl_name VALUES('$username' ,'$password','$hintQues' ,'$hintAns','$firstname' ,'$lastname' ,". 
       "'$gender' ,'$date','$nationality','$email')" ; 

    echo $statement; 

Всегда старайтесь держать заявление читаемыми, как это возможно .. и всякий раз, когда строка должна быть вставлена ​​.. он должен быть Собственость цитировали также всегда использовать mysql_escape_string(), чтобы избежать sql-инъекция.

  • Возможная проблема может быть ..you проезжают сам HTML элемент вместо его значение
+0

Почему только 2 поля отформатированы? –

+0

@YourCommonSense О, простите, моя ошибка ...Я просто редактирую его – alwaysLearn

+0

@new_developer см. Редактирование. –

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