2016-04-18 7 views
1

私はデータベースからIPを取り出し、さまざまな配列に分割して、各国のクライアント数を数えてヨーロッパの地図図。データベースからデータを取り出して別の配列に分けてください

今、私は国を異なる配列に分割する部分にこだわりました。

$result_ip = $dbhandle->query("SELECT ip FROM email;"); 
    $row_cnt_ip = $result_ip->num_rows; 

    $NL = array(''); 
    $AL = array(''); 
    $NO_EU = array(''); 


    $ip = $result_ip; 
    $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); 

    while($r = $details->country->fetch_array(MYSQLI_ASSOC)): 
     for($i = 1; $i < $row_cnt_ip; $i++) { 
    switch ($details->country) { 
     case "NL": //Netherlands 
      array_push($NL,"$details->country"); 
      break; 
     case "AL": //Albania 
      array_push($AL,"$details->country"); 
      break; 
     default; 
      array_push($NO_EU,"$details->country"); 
      break; 
      } 
     } 
     endwhile; 

私は取得していますエラーは次のとおりです。

Catchable fatal error: Object of class mysqli_result could not be converted to string

誰もが、問題が何であるかを考え出すに私を助けることができますか?

+0

"echo $ details-> country;"にエラーが表示されます。 ?もしあなたがこのエラーを受けていなければ、その配列のようなものであり、 "エコー"ステートメントでそれを印刷するのですか? –

+0

print_r($ result_ip)を試して、その中に何が入っているかを確認してください –

+0

@amit mysqli_result Object([current_field] => 0 – marijn

答えて

1

mysqli_query結果は直接使用できません。クエリ結果からデータを取得する必要があります

$result_ip = $dbhandle->query("SELECT ip FROM email"); 
$row_cnt_ip = $result_ip->num_rows; 
$NL = array(''); 
$AL = array(''); 
$NO_EU = array(''); 

$row=$result_ip->fetch_assoc();// fetch data 
$ip=$row['ip']; 

$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); 
+0

致命的なエラー:メンバ関数fetch_array()を呼び出すと、whileループを開始する行が表示されます。答えがありがとう、私は一歩近づいたようです。 – marijn

+0

'$ result_ip-> data_seek(0)を使用してください。 ($ r = $ result_ip-> fetch_array(MYSQLI_ASSOC)): ' – Saty

+0

@Satlyあなたの提案をお寄せいただきありがとうございます。エラーは起こっていますが、$ NLを印刷すると552の結果が出ますが、データベースには24行しかありません – marijn

関連する問題