2013-09-10 5 views
0

У меня есть регистрационная форма на моем сайте, и я получаю Error 1054, когда человек пытается зарегистрироваться.Ошибка PHP/MySQL 1054 для регистрации формы

Код РНР:

$con=mysql_connect("server","database","password"); 
// Check connection 
if (!$con) 
{ 
    echo "Failed to connect to MySQL" . mysql_errno(); 
} 

$sql="INSERT INTO database.table (User_ID, Name, Email, Telephone, MyPassword) 
VALUES 
(NULL,'$_POST[name]','$_POST[email]','$_POST[telephone]','$_POST[mypassword]')"; 

if (!mysql_query($sql,$con)) 
{ 
    die('Error: you fail'.mysql_errno()); 
} 
$User_Id= mysql_insert_id(); 

$sql="INSERT INTO database.table (Address1, Address2, Address3, Address4) 
VALUES 
('$_POST[address1]','$_POST[address2]','$_POST[address3]','$_POST[address4]')"; 
//Inserts address into Address table 


if (!mysql_query($sql,$con)) 
{ 
    die('Error: you failed' . mysql_errno()); 
} 
echo "Thank you for registering with Market Buddy"; 

mysql_close($con); 

Я поставил код в онлайн-компилятор, чтобы получить более подробное описание ошибки и по этой линии:

('$_POST[address1]','$_POST[address2]','$_POST[address3]','$_POST[address4]')"; 

Это дает мне следующее сообщение об ошибке:

Syntax error, unexpected t_encapsed and whitespace, expecting T_String or T_Variable or T_num_string.

+0

Вам необходимо избежать ввода пользователем. См. [Здесь] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

ответ

0

Строго Во-первых: Используйте mysqli_ * вместо mysql_ *, запрос есть SQL Injection угрозы Possiblity, использовать подготовленный запрос заявление ...

Ошибка 1054: этот тип ошибки в основном происходит, когда имя столбца не vaild, проверьте свой стол, как в моем смысле.

+1

Или используйте PDO, но не mysql_ * – Arjan

-1

Вы должны использовать фигурные скобки {}, когда доступ к массиву:

$sql="INSERT INTO database.table (Address1, Address2, Address3, Address4) 
VALUES 
('{$_POST["address1"]}','{$_POST["address2"]}','{$_POST["address3"]}','{$_POST["address4"]}')"; 

Редактировать: Ошибка 1054 означает «плохой столбец» - вы уверены, что упомянутые столбцы существуют в вашей таблице? http://dev.mysql.com/doc/refman/5.0/es/error-handling.html#error_er_bad_field_error

+0

, который, похоже, не работает, все еще получая ту же ошибку 1054. – user2753810

+0

Да, это были неправильные имена столбцов в коде. Не могу поверить, что я сделал эту ошибку. Думаю, мне нужно отойти от компьютера и выпить кофе. – user2753810

+0

Итак, теперь сценарий отправляется только во вторую таблицу, а не в первый – user2753810

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