2012-04-03 4 views
1

У меня есть этот кусок кодаPHP, выпуск базы данных

<?php 


$con = mysql_connect("localhost","root","password"); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("tables", $con); 
$sql="INSERT INTO customer (Name, Telephone, Email, Address, PostCode, Specialisation) 
VALUES 
($_POST['firstname'], $_POST['telephone'],$_POST['email'],   $_POST['address'],$_POST['postcode'],$_POST['special'])"; 

if (!mysql_query($sql,$con)) 
{ 
die('Error: ' . mysql_error()); 
} 
echo "Inserted into Worker database"; 

mysql_close($con); 
?> 

я получаю эту ошибку error- Синтаксическая:. Синтаксическая ошибка, неожиданный T_ENCAPSED_AND_WHITESPACE, ожидая T_STRING или T_VARIABLE или T_NUM_STRING в

Я не конечно, что еще делать. Пожалуйста помоги. Спасибо

+0

Не могли бы вы рассказать нам, какая строка вызывает эту ошибку? – Intrepidd

+0

Эта строка - ($ _ POST ['firstname'], $ _POST ['phone'], $ _ POST ['email'], $ _POST ['address'], $ _ POST ['postcode'], $ _ POST [' special ']) "; – Ester

+0

. Сначала я должен проверить, какой запрос вы выполняете, распечатав его. Это запрос, который вы хотите проверить с помощью phpmyadmin и дайте мне знать. – Sumant

ответ

4

У вас есть несколько вопросов.

Во-первых, строковые значения, которые вы вставляете в базу данных, нуждаются в одинарных кавычках вокруг них.

Во-вторых, переменные массива в строках должны быть обернуты в {} (т.е. $string = "Something something {$_POST['variable']}..."; помочь РНР PARSER понять их.

В-третьих, этот код (один рабочий) массово уязвимы для взлома с помощью инъекции SQL. Рассмотрите возможность использования PDO и подготовленные заявления (как mysql_* функции устаревшим), или по крайней мере, запустить пользовательский ввод через mysql_real_escape_string().

$sql="INSERT INTO customer (Name, Telephone, Email, Address, PostCode, Specialisation) VALUES ('" . mysql_real_escape_string($_POST['firstname']) . "', '" . mysql_real_escape_string($_POST['telephone']) . "', '" . mysql_real_escape_string($_POST['email']) . "', '" . mysql_real_escape_string($_POST['address']) . "', '" . mysql_real_escape_string($_POST['postcode']) . "', '" . mysql_real_escape_string($_POST['special']) . "')"; 

в-четвертых, вы действительно не должны использовать root пользователя в базу данных для подключения.

1

$sql Изменить переменную для чтения на одной линии, и послать правильный формат SQL:

$sql="INSERT INTO customer (Name, Telephone, Email, Address, PostCode, Specialisation) VALUES ({$_POST['firstname']}, {$_POST['telephone']},{$_POST['email']}, {$_POST['address']},{$_POST['postcode']},{$_POST['special']})"; 

Это должно исправить ошибку PHP unexpected T_ENCAPSED_AND_WHITESPACE но вам нужно больше corrections к fix в SQL Injection возможность.

+0

PHP охватывает несколько строк в строке очень хорошо. -1. – ceejayoz

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