0

私はこのコードに取り組んでおり、単純な挿入ステートメントを使用していますが、なぜそれが機能しないのか理解できません。誰かが私が間違っていることを見ることができたら、私に知らせてください。ありがとう!これは私が得ているエラーです:

You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL     server version for the right syntax to use near 'long,comments) 
VALUES (2 ,2012-11-18 21:25:30, 39.3436984, -76.5856958, hh)' at line 1

コードは次のとおりです。

 mysql_query ("INSERT INTO incidents (emergency_type,date_time,lat,long,comments)  
VALUES  (2 ,$catchDate, $catchLat, $catchLong, $catchDescription)") or die(mysql_error());   
 echo"<br /> Data inserted";
4

3 に答える 3

2

Longは予約語です。代わりに、バッククォートで囲まれた`long`を試してください。

参照https://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

ドキュメントをざっと見てみると、これを行うにはPDO::preparePDO::executeを調査する必要があることがわかります。現在のメソッドはSQLインジェクションに対して脆弱であるようです。

私はPHPプログラマーではありませんが、次のようなものです。

$db = get a db handle from somewhere
$st = $db->prepare('Insert Into Incidents (emergency_type, date_time, lat, `long`, comments) Values (?, ?, ?, ?, ?)');
$st->execute(array(2 ,$catchDate, $catchLat, $catchLong, $catchDescription));
于 2012-11-18T21:51:53.457 に答える
0
INSERT INTO incidents (emergency_type,date_time,lat,`long`,comments)  
VALUES  (2 ,$catchDate, $catchLat, $catchLong, '$catchDescription')

LONGMySQL予約キーワードのリストにあります。代わりにバックティックでエスケープしてください。

もう1つ、との値は数値ではないためdate_timecomments 一重引用符で囲む必要があります。

クエリは脆弱にSQL Injectionなりました。時間をかけて以下の記事を読んでください。

于 2012-11-18T21:47:16.670 に答える
0

LONGは、 mysqlのキーワード/予約語です。あなたはそれを逃れるためにバックティックを使うことができます

INSERT INTO incidents (emergency_type,date_time,lat,`long`,comments)

または、テーブルの列名を次のように変更しますlongitude

于 2012-11-18T21:54:15.503 に答える