2014-09-01 2 views
1

Я делаю бланк заказа с помощью PHP, который отправляет в свою базу данных, но я получаю эту ошибку, когда я представить его:У Вас есть ошибка в вашем SQL синтаксиса PHP MySQL

Ошибка: У Вас есть ошибка в вашем SQL синтаксис; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «case, casel, processor». VALUES ('case1', 'casel1', 'processor1') 'по строке 1

вот мой код

index.php:

<Form name ="pc" Method ="Post" ACTION ="cart.php"> 
<Input type = 'Radio' Name ='case' value= 'case1' />Case 1 <br /> 
<Input type = 'Radio' Name ='case' value= 'case2' />Case 2 <br /> 
<Input type = 'Radio' Name ='case' value= 'case3' />Case 3 <br /><br /> 

<Input type = 'Radio' Name ='casel' value= 'casel1' />Red<br /> 
<Input type = 'Radio' Name ='casel' value= 'casel2' />Green <br /><br /> 

<Input type = 'Radio' Name ='processor' value= 'processor1' />Intel&reg; Core&trade; i3 4130 3,4 GHz<br /> 
<Input type = 'Radio' Name ='processor' value= 'processor2' />Intel&reg; Core&trade; i5 4670K 3.40 Ghz <br /> 
<Input type = 'Radio' Name ='processor' value= 'processor3' />Intel&reg; Core&trade; i7 4770K 3.5 GHz <br /> 

<Input type = 'submit' Name ='submit' value= 'Submit' ><br /> 

</FORM> 

cart.php

<?php 
include("config.php"); 
if (isset($_POST['case']) && isset($_POST['casel']) && isset($_POST['processor'])) { 
$case = mysqli_real_escape_string($mysqli, $_POST['case']); 
$casel = mysqli_real_escape_string($mysqli, $_POST['casel']); 
$processor = mysqli_real_escape_string($mysqli, $_POST['processor']); 

$sql="INSERT INTO products (case, casel, processor) 
    VALUES ('$case', '$casel', '$processor')"; 

if (!mysqli_query($mysqli,$sql)) { 
    die('Error: ' . mysqli_error($mysqli)); 
} 
echo "1 record added"; 
} else { 
echo "You didn't choose all the options! No record was added. Please choose one option from each category"; 
} 
?> 

ответ

4

Помните, что case является зарезервированным словом, и поэтому должны быть внутри обратные кавычки:

 
`case` 
INSERT INTO products (`case`, casel, processor) 

Вот list зарезервированных слов.

Примечание: Хорошее предложение от fluffeh и лучше всего использовать другое имя столбца.

Кстати, поскольку вы используете mysqli_*, почему бы не использовать prepared statements.

+1

Возможно, стоит отметить, что имя столбца зарезервированное слово TERRIBLE. Лучше всего переименовать его и никогда больше не использовать такое имя. – Fluffeh

+0

О, боже, я так глуп, спасибо, сэр! –

+0

@KyleThomas уверен, что человеку нет проблем – Ghost

1

case является reserved word в MySQL. Для того, чтобы использовать синтаксис слова в качестве идентификаторов вам необходимо заключить их в спине клещи:

INSERT INTO `products` (`case`, `casel`, `processor`) 
VALUES ('$case', '$casel', '$processor') 

В общем:

  1. Это хорошая идея, чтобы явно заключать идентификаторы в задних клещи в любом случае.
  2. Нельзя использовать зарезервированные слова как идентификаторы.
+0

благодарит за помощь! –

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