2017-02-14 8 views
-1

私は、localhostでmySQL with WampServerで使用するPHPスクリプトを作成しています。localhostでのmySQL構文エラー

私はデータベースにPHPファイルに入力されていますいくつかの緯度/経度の値を格納しようとしていますが、私はあなたのSQL構文でエラーが発生している」このエラーに

を取得しています。に該当するマニュアルを確認してください近くに使用する権利構文についてはMySQLサーバのバージョンは、1" 行目で「(1.24242' 、 『0.52512』)」の値を-ordinates」

これは私のコード

<?php 

require "init.php"; 
$Longitude = "1.24242"; 
$Latitude = "0.52512"; 

$sql_query = "insert into co-ordinates values('$Longitude', '$Latitude');"; 

if(mysqli_query($con, $sql_query)) 
{ 
    echo "<h3> Data Insertion Sucess.... </h3>"; 
} 

else 
{ 
    echo "Data insertion error... ".mysqli_error($con); 
} 

?> 

そしてある 『のスペック』私のデータベース - https://gyazo.com/3c0edf48ee89fef9dc25e12af693b4e2

私はこのすべてにとても新しいので、どんな助けでも大歓迎です。

+1

バック調整でエスケープしない限り、 'co-ordinates'は有効なテーブル名ではありません。エラーは**非常に具体的**です。 – tadman

+0

**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman

+0

重要なコードを外部リンクとして投稿しないでください。特に、誰もクリックできないような無関係のジャンクのようなスクリーンショットが詰まってしまいます。スキーマが重要な場合は、代わりに 'SHOW CREATE TABLE'を投稿してください。 – tadman

答えて

0

は、あなたがこのようなPHPコードの行を持っていたとします

$Long-itude = "1.24242"; 

変数名が無効であること。何故なの? -は通常マイナス演算子であり、変数名の一部として使用すると解析のあいまい性が生じます。ダッシュを含む変数名ですか?または、変数$Longから定数itudeの値を引いた値ですか?

これはSQLと同じです。これは簡単です。多くの句読記号も演算子です。そのため、通常は識別子名には使用できません。

実際には、句読点や空白を列名の一部として使用する必要がある場合、SQLではプログラミング言語がほとんどありません。識別子を区切ると、SQLでは可能です。

$sql_query = "insert into `co-ordinates` values(...)"; 
+0

PHPでもこれが許されています: '$ {'Long-itude'} =" 1.24242 ";' –

+0

うわー、それは忘れました。とにかく、SQLとPHPの両方で、あなたがそのような識別子を避けるならあなた自身に感謝します! –