2017-02-21 3 views
0

Я продолжаю получать неожиданные «;». Я не могу понять, в чем проблема. Если у кого-то есть предложения, я бы очень признателен.Запись данных формы в базу данных SQL

send_post.php

<?php 
//Create connect 
$connect = mysqli_connect("localhost","tasks","tasks15!","tasks"); 
//Sending form data to sql db. 
mysqli_query ($connect,"INSERT INTO tasks (CompanyName, ContactName, Address1, Address2, City, State, Zip, Phone1, Phone2, Fax1) 
VALUES ('$_POST[tasks_CompanyName]', '$_POST[tasks_ContactName]',  '$_POST[tasks_Address1]', '$_POST[tasks_Address2]' ,'$_POST[tasks_City]','$_POST[tasks_State],'$_POST[tasks_Zip]', '$_POST[tasks_Phone1]','$_POST[tasks_Phone2]','$_POST[tasks_Fax1]');" 

?> 

index.html

<form action="send_post.php" method="post"> 
<h1>Customer Information</h1> 

<h3>Company Name</h3> <input type="text" name="tasks_CompanyName"> <br> 
<h2>Customer Name</h2><h3>First Name</h3> <input type="text" name="tasks_fname"><br> 
<h3> Last Name</h3><input type="text" name="tasks_lname"><br> 
<h3> Address 1 </h3> <input type="text" name="tasks_Address1"><br> 

<h3> Address 2</h3> <input type="text" name="tasks_Address2"><br> 

<h3>City</h3><input type="text" name="tasks_City"><br> 

<h3>State</h3> <input type="text" name="tasks_State"><br> 

<h3>Zip</h3> <input type="text" name="tasks_Zip"><br> 

<h3>Phone 1</h3><input type="text" name="tasks_Phone1"><br> 

<h3>Phone 2</h3> <input type="text" name="tasks_Phone2"><br> 

<h3>Fax 1</h3>  <input type="text" name="tasks_Fax1"><br> 


<input type="submit"> 
</form> 
+1

'$ _POST [tasks_Fax1]'); "to '$ _POST [tasks_Fax1]');"); –

ответ

1
mysqli_query ($connect,"INSERT INTO tasks (CompanyName, ContactName, Address1, Address2, City, State, Zip, Phone1, Phone2, Fax1) 
VALUES ('$_POST[tasks_CompanyName]', '$_POST[tasks_ContactName]',  '$_POST[tasks_Address1]', '$_POST[tasks_Address2]' ,'$_POST[tasks_City]','$_POST[tasks_State],'$_POST[tasks_Zip]', '$_POST[tasks_Phone1]','$_POST[tasks_Phone2]','$_POST[tasks_Fax1]');" 

Есть несколько ошибок в этой строке. $_POST - это массив, и поэтому вы должны получить доступ к значению, используя имя ключа - например, $_POST["tasks_Address1"], а не $_POST[tasks_Address1].

У вас также есть точка с запятой внутри котировок в конце строки: '$_POST[tasks_Fax1]');". Вы хотите поставить эту точку с запятой снаружи: '$_POST[tasks_Fax1]')";.

Ваш SQL также потенциально подвержен SQL-инъекции. Прочитайте некоторые ресурсы, такие как How can I prevent SQL injection in PHP, за некоторые идеи о том, как сделать код безопасным от вредоносного ввода.

+0

Я думаю, что точка с запятой в конце может остаться (поскольку она заканчивается заявлением sql), но добавочную точку с запятой следует положить в конец строки, чтобы положить конец инструкции php – flynorc

+0

@flynorc вы правы; вы можете иметь один в конце инструкции SQL, но это не требуется – CynePhoba12

0

Вы можете попробовать добавить ");" отсутствует в конце строки mysqli_query.

send_post.php: 5

<?php 
mysqli_query ($connect,"INSERT INTO tasks 
    (CompanyName, ContactName, Address1, 
    Address2, City, State, Zip, Phone1, 
    Phone2, Fax1) 
VALUES 
    ('$_POST[tasks_CompanyName]', '$_POST[tasks_ContactName]', 
    '$_POST[tasks_Address1]', '$_POST[tasks_Address2]', 
    '$_POST[tasks_City]',  '$_POST[tasks_State], 
    '$_POST[tasks_Zip]',  '$_POST[tasks_Phone1]', 
    '$_POST[tasks_Phone2]', '$_POST[tasks_Fax1]' 
);"); 
?> 

Обратите внимание, что это опасно для записи данных POST без проверки, поскольку это может привести к XSS и SQL инъекций писак.

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