1

このエラーが発生します:

Query failed: 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 ' ,,)' at line 2

このPHPコードについて:

<?php

$id = $_POST['id'];
$longitude = $_POST['longitude'];
$latitude = $_POST['latitude'];
$timestamp = $_POST['stringFromDate'];



$link = mysql_connect('server', 'user', 'pass')
or die('Could not connect: ' . mysql_error());

mysql_select_db('db_name') or die('Could not select database');

// Performing SQL query
$query="INSERT INTO locatie (id, longitude, latitude, timestamp) 
VALUES ($id, $longitude,$latitude,$timestamp)";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
echo "OK";

// Free resultset
mysql_free_result($result);

// Closing connection
mysql_close($link);
?>

私は初心者なので、私は何が間違っているのかわかりません

編集:これはphpファイルに書き込むコードです:

 - (void)myFuntionThatWritesToDatabaseInBackgroundWithLatitude:(NSString *)latitude  longitude:(NSString *)longitude date:

 (NSString *)stringFromDate {


_phonenumber = [[NSUserDefaults standardUserDefaults] objectForKey:@"phoneNumber"];

NSMutableString *postString = [NSMutableString stringWithString:kPostURL];
NSString*jsonString = [[NSString alloc] initWithFormat:@"{\"id\":\"%@\",\"longitude\":\"%@\",\"latitude\":\"%@\",\"timestamp\":\"%@\"}",_phonenumber, longitude , latitude, stringFromDate];

[postString appendString:[NSString stringWithFormat:@"?data=%@", jsonString]];
[postString setString:[postString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:postString ]];
[request setHTTPMethod:@"POST"];

[[NSURLConnection alloc] initWithRequest:request delegate:self ];
NSLog(@"Post String =%@", postString);


//    LocationTestViewController*locationTestViewController = [[LocationTestViewController alloc]init];
//    phonenumber = locationTestViewController.telefoonnummer;
NSLog(@"HERE1 : %@", _phonenumber);





 }
4

5 に答える 5

2

問題番号 1:mysql_*関数を使用しています。これらには、何らかの理由で使用しないようにという赤い警告ボックスがあります。

問題番号 2: データをエスケープしていません。これにより、予期しない入力によって引き起こされる XSS 攻撃や SQL 構文エラーに対して脆弱になります。

問題番号 3: SQL クエリでデータを引用していません。

これら 3 つの問題はすべて、最新の API を必要とし (問題 1 を解決)、データを自動的に引用してエスケープする (問題 2 と 3 を解決する)準備済みステートメントとパラメーター化されたクエリを使用することで解決できます。

于 2012-10-09T13:05:29.330 に答える
0

@MichaelBerkowskiが言ったように、POSTデータの内容を確認することをお勧めします。これらの変数の1つが完全に空であると確信しています:

$id = $_POST['id'];
$longitude = $_POST['longitude'];
$latitude = $_POST['latitude'];
$timestamp = $_POST['stringFromDate'];
于 2012-10-09T13:01:15.993 に答える