mysqli_num_rows()期望参数1为mysqli_result geolocation

时间:2012-05-11 07:04:26

标签: php mysqli

我真的不知道我做错了什么。我想计算查询中的行数。我的id从1开始到......步骤1,所以最大的数字是最后一条记录。我只想让脚本在de DB的最后一条记录上运行。所以这是我的代码。

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);
                        }
            }

    }

2 个答案:

答案 0 :(得分:0)

您的查询不正确$query = "SELECT * FROM tblPlaces WHERE 1";

你应该在where子句之后指定列名,以便与值进行比较,例如:WHERE column_name = 1或类似的东西。

答案 1 :(得分:-1)

你正在使用mysqli_num_rows($ result),但你没有使用MySQLi。

变化:

$row_cnt = mysqli_num_rows($result);

要:

$row_cnt = mysql_num_rows($result);

你应该好好去。