2017-02-05 2 views
1

строк кода SQL:У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MariaDB для правильного синтаксиса, чтобы использовать рядом с «Диапазон

$uid=$_POST["uid"]; 
$mobile=$_POST["mobile"]; 
$service=$_POST["service"]; 
$exper=$_POST["exper"]; 
$range=$_POST["range"]; 
$af=$_POST["a_from"]; 
$at=$_POST["a_to"]; 
$min_charge=$_POST["min_charge"]; 

$statement=mysqli_prepare($con,"INSERT INTO service (uid,mobile,service,exper,range,a_from,a_to,min_charge) VALUES (?,?,?,?,?,?,?,?)"); 

mysqli_stmt_bind_param($statement,"iisiiiii",$uid,$mobile,$service,$exper,$range,$af,$at,$min_charge); 

mysqli_stmt_execute($statement); 

$response=array(); 
$response["success"]=true; 

echo mysqli_error($con); 
echo json_encode($response); 

все в порядке, и я не получаю синтаксическую ошибку, когда я пишу . код (я использую программное обеспечение коды редакторов Однако, когда я использую его в Интернете, я получаю эту ошибку:..

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'range,a_from,a_to,min_charge) VALUES (?,?,?,?,?,?,?,?)'

+0

1-й пост 5 о sql, который OP фактически НЕ использует вырезанные sql-библиотеки. На правильном пути Sachin –

ответ

2

Это не очевидно range зарезервированного слова Это делает паршивое имя столбца, но если вы используете его, вам необходимо избегать его:

INSERT INTO service (uid, mobile, service, exper, `range`, a_from, a_to, min_charge) 
    VALUES (?, ?, ?, ?, ?, ?, ?, ?) 

Here - это список зарезервированных слов.

Для тех, кто заинтересует вас, RANGE - это тип перегородки. Вы можете прочитать об этом here. Я не уверен, почему MySQL должен резервировать это, учитывая, что многие ключевые слова на самом деле не зарезервированы.

И я хотел бы добавить: Когда зарезервированное слово очевидно, такие как FROM, TO или GROUP, я голосую, чтобы закрыть такие вопросы, как простая опечатка (оставив комментарий). Но для меня RANGE является довольно неожиданным как зарезервированное слово, учитывая, что многие синтаксические элементы не зарезервированы, например OFFSET, PARTITIONS, HASH (также используется для разбиения), HOUR, BEGIN.

+0

* «Но RANGE довольно неожиданен как зарезервированное слово». * - Я не совсем понимаю, что вы имели в виду. https://dev.mysql.com/doc/refman/5.7/en/keywords.html 'RANGE (R)'. –

+0

@ Fred-ii-. , , Полностью субъективный. Для меня это неожиданно, когда 'RANGE' и' PARTITION' зарезервированы, но 'HASH' и' PARTITIONS' не являются. Все они являются ключевыми словами для той же статьи. –

+0

Если вы сделаете это, я бы избежал всех столбцов, для согласованности. – Nanne