2012-05-11 6 views
1

私は間違っていることを本当に知りません。私は私のクエリの行を数えたい。私のIDは1から...ステップ1から始まったので、最も大きな数字が最後のレコードです。私はスクリプトをDBの最後のレコードで実行させたいだけです。だからここに私のコードです。mysqli_num_rows()は、パラメータ1がmysqli_resultのジオロケーションであることを期待しています

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

    } 

答えて

0

質問が間違っています$query = "SELECT * FROM tblPlaces WHERE 1";

where句の後に列名を指定すると、たとえば、WHERE column_name = 1などの値と比較できます。

+0

私はそう思っていません。私はrowcountなしでとてもうまく動いています。google apiから過去のコピーです。ありがとう – Niels

+0

私はwhere節の条件について言及するのを忘れてしまったので、私は同じような問題に直面しました。このサイトに移動してwhere句に関するチュートリアルを表示します。[where clause tutorial](http://www.tutorialspoint.com/mysql/mysql-where-clause.htm) – shivgre

-1

あなたは($結果)mysqli_num_rowsを使用しているが、あなたはMySQLiをを使用していません。

変更:

$row_cnt = mysqli_num_rows($result); 

へ:

$row_cnt = mysql_num_rows($result); 

そして、あなたが行くように良いことがあります。

+1

ありがとう、私はmysqliに自分のコードを変更するつもりです。 – Niels

+1

古き良きmysql_ *関数を使って新しいコードを書いてください。それらはもはや維持されず、コミュニティは[非推奨プロセス](http://goo.gl/KJveJ)を開始しました。代わりに、[準備完了声明](http://goo.gl/vn8zQ)について学び、[PDO](http://php.net/pdo)または[MySQLi](http://php.net/)を使用する必要があります。 mysqli)。あなたが決定できない場合、[この記事](http://goo.gl/3gqF9)が選択に役立ちます。あなたが学びたい人は、[ここではかなり良いPDO関連のチュートリアルです](http://goo.gl/vFWnC)。 – vascowhite

+0

@vascowhite申し訳ありませんが、私はこの瞬間にこれをmysqliに変換しようとしています – Niels

関連する問題