1

何が間違っているのか本当にわかりません。クエリの行を数えたい。私のIDは1から...ステップ1で始まったので、最大数は最後のレコードです。deDBの最後のレコードでのみスクリプトを実行させたい。これが私のコードです。

public function saveLongLan()
    {
        define("MAPS_HOST", "maps.google.com");
        define("KEY", "MYKEY");

        $link = mysql_connect('localhost', 'root', 'root');
        if (!$link) {
         die('Not connected : ' . mysql_error());
        }

        // Set the active MySQL database
        $db_selected = mysql_select_db('Foodsquare', $link);
        if (!$db_selected)  
        {
            die("Can\'t use db : " . mysql_error());
        }

        $query = "SELECT * FROM tblPlaces WHERE 1";
        $result = mysql_query($query);
        $row_cnt = mysqli_num_rows($result);


            if (!$result) 
                {
                    die("Invalid query: " . mysql_error());
                }


        $delay = 0;
        $base_url = "http://" . MAPS_HOST . "/maps/geo?output=xml" . "&key=" . KEY;

        while ($row = @mysql_fetch_assoc($result)) 
            {
                $geocode_pending = true;

                    while ($geocode_pending) 
                        {
                            $address = $row["Street"];
                            $id = $row["Id"];
                            $request_url = $base_url . "&q=" . urlencode($address);
                            $xml = simplexml_load_file($request_url) or die("url not loading");

                            $status = $xml->Response->Status->code;
                            if (strcmp($status, "200") == 0) 
                                {
                                      // Successful geocode
                                      $geocode_pending = false;
                                      $coordinates = $xml->Response->Placemark->Point->coordinates;
                                      //explode functie breekt een string af vanaf een bepaald teken en stopt hem dan in een array
                                      $coordinatesSplit = explode(',', $coordinates);
                                      // formaat: Longitude, Latitude, Altitude
                                      $lat = $coordinatesSplit[1];//getal = plaats in array
                                      $lng = $coordinatesSplit[0];


                                      $query = sprintf("UPDATE tblPlaces " .
                                                " SET lat = '%s', lng = '%s' " .
                                                " WHERE id = '". $row_cnt . "' LIMIT 1;",
                                             mysql_real_escape_string($lat),
                                             mysql_real_escape_string($lng),
                                             mysql_real_escape_string($id));
                                      $update_result = mysql_query($query);
                                          if (!$update_result) 
                                            {
                                            die("Invalid query: " . mysql_error());
                                            }
                                } else if (strcmp($status, "620") == 0) 
                                    {
                                          // sent geocodes too fast
                                          $delay += 100000;
                                    } 
                                    else 
                                    {
                                        // failure to geocode
                                        $geocode_pending = false;
                                        echo "Address " . $address . " failed to geocoded. ";
                                    echo "Received status " . $status . " \n";
                                    }
                                usleep($delay);
                        }
            }

    }
4

2 に答える 2

0

クエリが正しくありませ$query = "SELECT * FROM tblPlaces WHERE 1"ん;

たとえばWHERE column_name = 1、次のような値と比較するために、where句の後に列名を指定する必要があります。

于 2012-05-11T07:19:50.470 に答える
-1

mysqli_num_rows($ result)を使用していますが、MySQLiを使用していません。

変化する:

$row_cnt = mysqli_num_rows($result);

に:

$row_cnt = mysql_num_rows($result);

そして、あなたは行ってもいいはずです。

于 2012-05-11T07:11:02.203 に答える