2016-04-18 8 views
1

Ich versuche, die IP aus der Datenbank und teilen sie in verschiedenen Arrays, so dass ich die Anzahl der Clients in jedem Land zählen kann, und legen Sie sie in ein Europakarte-Diagramm.Holen Sie Daten aus einer Datenbank und trennen Sie sie in verschiedenen Arrays

Jetzt bin ich auf dem Teil fest, wo ich die Länder in verschiedene Arrays aufteilen.

$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; 

Der Fehler Ich erhalte ist:

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

Kann mir jemand helfen, herauszufinden, was das Problem ist?

+0

Fehler in "echo $ details-> country;" ? wenn nicht dann, wo Sie diesen Fehler haben, ist es, wie Sie array und tri, um es mit "echo" Anweisung drucken –

+0

versuchen print_r ($ result_ip) und sehen, was drin ist –

+0

@amit mysqli_result Object ([current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 24 [type] => 0) – marijn

Antwort

1

Sie können mysqli_query Ergebnis nicht direkt verwenden. Sie müssen Daten aus Ihrem Abfrageergebnis abrufen

$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

Schwerwiegender Fehler: Rufen Sie eine Memberfunktion fetch_array() in Zeile auf, es ist die Zeile, in der ich die While-Schleife starte, erkundige mich jetzt. Danke für die Antwort sieht aus wie ich jetzt einen Schritt näher bin. – marijn

+0

Verwenden Sie '$ result_ip-> data_seek (0); while ($ r = $ result_ip-> fetch_array (MYSQLI_ASSOC)): ' – Saty

+0

@Satly Vielen Dank für Ihren Vorschlag, die Fehler gehen aber, wenn ich die $ NL drucke gibt es 552 Ergebnisse, aber es gibt nur 24 Zeilen in der Datenbank – marijn