2017-05-09 9 views
-2

hier mein Code in Class.php:foreach innerhalb foreach Fehler

public function select(){ 
     $stmt = $this->conn->prepare("SELECT country FROM `country`") or die($this->conn->error); 
     if($stmt->execute()){ 
      $result = $stmt->get_result(); 
      return $result; 
     } 
    } 


public function read(){ 
     $stmt = $this->conn->prepare("SELECT segment FROM `segments`") or die($this->conn->error); 
     if($stmt->execute()){ 
      $result = $stmt->get_result(); 
      return $result; 
     } 
    } 

und jetzt in index.php tat ich dies:

      <th class="text-center">country</th> 

          <th class="text-center">segments</th> 
      </thead> 
      <tbody> 
      <?php 

       require 'class.php'; 

       $conn = new db_class(); 
       $read = $conn->select(); 
            $test = $conn->read(); 

       while($fetch = $read->fetch_array(MYSQLI_ASSOC)&& $fetch1 = $test->fetch_array(MYSQLI_ASSOC)){ 
             foreach ($fetch1 as $field => $values) { 


             foreach($fetch as $field=>$value){ 
    echo '<tr><td>' . $value . '</td>' 
      . '<td>'. $values .'</td>'; 
} 

             } 
}  


      ?> 




      </tbody> 
     </table> 

im nur Daten zu holen versuchen aus 2 Tabellen und legte sie in eine HTML-Tabelle

Ich bekomme diesen Fehler für 6 mal:

Warning: Invalid argument supplied for foreach() in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\segments\countrySegment.php on line 59

im nur versuchen, Daten aus zwei Tabellen zu holen und sie in einer HTML-Tabelle und wenn irgend jemand wissen, wie, ich will einen Tropfen für jedes Land Down-Menü mit Segmentwerten innerhalb irgendein Idee? thank u im Voraus

+0

können Sie '$ fetch' &&' $ fetch1' in der Schleife drucken? –

+0

kam es mit diesem Fehler: Array zu String-Konvertierung @AgamBanga –

+0

Do 'print_r ($ fetch)' && print_r ($ fetch1) 'anstelle von' echo' –

Antwort

1

Dies, weil die Array-Zeiger Ausgabe

foreach ($fetch1 as $field => $values) { 
    foreach($fetch as $field=>$value){ 
     echo '<tr><td>' . $value . '</td>' 
      . '<td>'. $values .'</td>'; 
    } 
} 

erstmals beim nächsten Mal zweiten foreach druckt alles, was es hat keinen Wert, es über den Wert Punkte ..

so müssen Sie die zurücksetzen Array zurückgesetzt werden

foreach ($fetch1 as $field => $values) { 
    reset($fetch) 
    foreach($fetch as $field=>$value){ 
     echo '<tr><td>' . $value . '</td>' 
      . '<td>'. $values .'</td>'; 
    } 
} 

oder Sie können es eine temporäre Variable speichern

foreach ($fetch1 as $field => $values) { 
    $fetchtmp = $fetch; 
    foreach($fetchtmp as $field=>$value){ 
     echo '<tr><td>' . $value . '</td>' 
      . '<td>'. $values .'</td>'; 
    } 
} 
+0

danke, aber es funktioniert nicht immer noch den gleichen Fehler haben –

+0

welche Option versucht –

+0

beide Option @ v-Sugumar –