-2

これが私が得る私のjson文字列です:

[data] => {"id":"0612833398","longitude":"-143.406417","latitude":"32.785834","timestamp":"10-10 07:56"}

そして、私はそれを私のphpファイルにこのように置くためにそれを必要とします、しかし私はNULL値しか得ません。

<?php
file_put_contents('dump.txt', "POST: \n" . print_r($_POST, true) . "\n\n\n GET: \n" . print_r($_GET, true));

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

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

// Performing SQL query
if (isset($_POST['data'])) {
$data = json_decode($_POST['data']);
$id = $data['id'];
$latitude = $data['latitude'];
$longitude = $data['longitude'];
$timestamp = $data['timestamp'];

}
$query = sprintf("INSERT INTO locatie (id, longitude, latitude, timestamp) VALUES ('%s', '%s', '%s', '%s')", mysql_real_escape_string($id), mysql_real_escape_string($longitude),  mysql_real_escape_string($latitude), mysql_real_escape_string($timestamp))  ;
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
echo "OK";


// Free resultset
mysql_free_result($result);

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

私は本当に近いように感じます:1行目のdump.txtは次のようになります:

POST:配列()

 GET: 
Array
(
    [data] => {"id":"0612833398","longitude":"-143.406417","latitude":"32.785834","timestamp":"10-10 07:56"}
)
4

2 に答える 2

4

配列に変換し、次のように変更する必要があります$_GET

if (isset($_GET['data'])) {
    $data = json_decode($_GET['data'], true);
    $id = $data['id'];
    $latitude = $data['latitude'];
    $longitude = $data['longitude'];
    $timestamp = $data['timestamp'];

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

    // Free resultset
    mysql_free_result($result);
}

の2番目の引数json_decodeがtrueの場合、関数はオブジェクトではなく連想配列を返します。

ちなみに、プロジェクトのビルドを開始した場合は、mysql_*関数が非推奨になり、使用されなくなるため、コードをMySQLiまたはPDOに移動することをお勧めします。この素晴らしいチュートリアルをチェックして、始めましょう。

于 2012-10-10T08:34:14.633 に答える
2

そのjsonは、配列ではなくオブジェクトのシリアル化です。次のように記述します。

$data = json_decode($_GET['data']);
$id = $data->id;
$latitude = $data->latitude;
$longitude = $data->longitude;
$timestamp = $data->timestamp;

}
于 2012-10-10T08:37:25.470 に答える