2017-02-05 4 views
1

行使用する権利構文については、ご使用のMariaDBサーバーのバージョンに対応するマニュアルを確認しますSQL構文にエラーがあります。近くに「範囲にSQLコードの

$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); 

すべてがOKですが、私が書くとき、私は、任意の構文エラーを得ることはありませんコード(私は、コード・エディタ・ソフトウェアを使用しています、私はそれをオンラインで使用する場合しかし、私はこのエラーを取得:。。

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 of 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がこれを予約する必要がある理由はわかりません。

さらに、予約語がFROMTO、またはGROUPのように明白な場合は、簡単な誤植(コメントを残す)などの質問を終了することにします。しかし、私には、OFFSETPARTITIONSHASH(パーティション化にも使用される)のような多くの構文要素が予約されていないので、予約語としてRANGEは予期せぬものです。HOURBEGIN

+0

* "しかし、範囲は予期せぬ予約語です。" * - あなたがその意味を理解していません。 https://dev.mysql.com/doc/refman/5.7/en/keywords.html 'RANGE(R)' –

+0

@ Fred-ii-。 。 。完全に主観的。私には、 'RANGE'と' PARTITION'は予約されていますが、 'HASH'と' PARTITIONS'は予約されていません。それらはすべて同じ節のキーワードです。 –

+0

これを行うと、一貫性のために、すべての列をエスケープします。 – Nanne

関連する問題