Я написал PHP-код для добавления адресов в базу данных. Затем я написал сценарий для чтения длинного / lan из этого адреса и сохранил их в БД. На данный момент в БД есть 10 элементов, но когда я добавляю 12-е или 13-е, он снова и снова перебирает всю базу данных, чтобы установить все это long / lan. Я думал подсчитать строки в БД, а затем в запросе обновления я только что написал обновление … где ID = $ rowCount Это мой код, но я получаю сообщение об ошибке. Попытка получить свойство не-объекта в строке 146: $ row_cnt = $ result-> num_rows;
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); if (!$result) { die("Invalid query: " . mysql_error()); } $row_cnt = $result->num_rows; $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); } } } }
Я еще ничего не изменил в инструкции по обновлению.