0

ここに書かれているコードはRadarsMySql.phpです

 <?php
 $con = mysql_connect("localhost","root","dacian");


 $db = mysql_select_db("radars");

 $sql = mysql_query("SELECT latitude,longitude,description FROM radars WHERE id > '0'");

 while($row=mysql_fetch_assoc($sql))
 $output[]=$row;
 print(json_encode($output));
 foreach($out["radars"] as $radars) { 
 $latitude = addslashes($radars[latitude]); 
 $longitude= addslashes($radars[longitude]); 
 $description = addslashes($radars[description]);

 mysql_query("INSERT INTO radars (latitude, longitude, description) VALUES('$name', '$ingredients', '$ingredients2')") or die (mysql_error()); 
 }

  mysql_close(); ?>

それは私にこのエラーを与えます:

Notice: Undefined variable: out in C:\xampp\htdocs\RadarsMySql.php on line 13

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\RadarsMySql.php on line 13

JSONを使用してAndroidアプリからデータを書き込みたいので、これが必要です。誰かが私に何が悪いのか、または私にいくつかのヒントを教えてもらえますか?

4

3 に答える 3

2
foreach ($out["radars"] as $radars) {}

$out["radars"]が配列の場合、これで問題ありません。そうでない場合は、バグが発生しますInvalid argument supplied for foreach

あなたの場合$out["radars"]はまったく存在しません。実際$outにはまったく存在しません。したがって、別のバグが発生しますUndefined variable out

変数を初期化しています$outputが、それをとして使用しようとしてい$outます。それはうまくいきません。

データベースからデータを引き出すには、データをJSONとしてエンコードし、出力します。

$sql = 'SELECT latitude,longitude,description FROM radars WHERE id>0'
$result = mysql_query($sql);

$rows = array();
while ($row = mysql_fetch_assoc($sql)) $rows[] = $row;
echo json_encode($rows);

また、サーバーに投稿されたJSONを受信するには、それを処理してデータベースに追加します。

// It's being posted as application/json, not as application/x-www-form-urlencoded, so it won't populate the $_POST array.
if ($json = file_get_contents('php://input')) {
    // Never mind. We'll do it ourselves.
    $a = json_decode($json, true); // Now we have a nice PHP array.
    $insert = '';
    foreach ($a as $v) {
        if ($insert) $insert .= ',';
        $insert .= ' ("' . $d->escape($v['lattitude']) . '", "' . $d->escape($v['longitude']) . '", "' . $d->escape($v['description']) . '")';
    }
    $sql = 'INSERT INTO `radars` (`latitude`, `longitude`, `description`) VALUES' . $insert;
    $d->exec($sql);
}

// I'm assuming you have a database class here, $d.
// $d->exec() could be simply mysql_query() or mysqli_query().
// $d->escape() should be mysql_real_escape_string() or mysqli_real_escape_string(), but both of those functions will fail if a database connection is not currently open.
// So $d->escape() should (a) check whether a connection is currently open, (b) open one if not, (c) perform the escape and return the result.
于 2012-05-11T17:34:06.527 に答える
0

$ outをどこで定義していますか?;)

foreach($out["radars"] as $radars) { 
于 2012-05-11T17:32:47.917 に答える
0

使用する

     foreach($output["radars"] as $radars) { 

上記のprintステートメントで作成したもの

于 2012-05-11T17:36:46.363 に答える