2016-04-08 2 views
-3

Ich arbeite mit einem Code in PHP & MySQL mit MySQLi. Es gibt zwei .php-Dateien, in denen Array-Werte durch einen Funktionsaufruf von einer Datei zur anderen übergeben werden müssen.Ich habe SO gesucht, einige gute Artikel gefunden, versucht, es zu implementieren.Noch habe ich keinen Weg gefunden, es durch PHP und MySQL zu lösen

erste PHP-Datei enthält die $data['uid_fk']; wo ich brauche die uid_fk aus der Tabelle student_register anzuzeigen, die Welcome_Students($uid) durch Funktionsaufruf abgerufen wird.

In der zweiten .php Datei ist die gewünschte Ausgabe in der Funktion, wo ich kommentiert habe als // Bis hier bekomme ich die Werte richtig, $csr[40,41,22,43] jeweils. Ich möchte die Werte in $csr($csr[0], $csr[1], $csr[2], $csr[3]) in der Where-Klausel von SELECT uid_fk FROM student_register WHERE csr IN $matches überprüfen. Es gibt mehr als eine uid_fk in der Tabelle, ich möchte alle uid_fk auf der Seite welcome_students.php anzeigen. Wie erreiche ich diese Ausgabe?

  1. welcome_students.php

    <?php 
    
    include"updates.php";  
    
    $Updates = new Updates(); 
    $updatesarray=$Updates->Welcome_Students($uid); 
    
    
    foreach($updatesarray as $data) { 
        echo "<br>".$data['uid_fk']; //i am not getting the value o uid_fk from the table 'student_register' here 
    } 
    ?> 
    
  2. updates.php

    <?php 
    
    Class Updates{ 
        public function Welcome_Students($uid) { 
         $q=mysqli_query($this->db,"SELECT School_Name FROM school_teacher_reg WHERE csr='$uid'")or die(mysqli_error($this->db)); 
         while($row1=mysqli_fetch_array($q,MYSQLI_ASSOC)) 
         { 
          $Schoolname=$row1[School_Name]; 
         } 
         $q1=mysqli_query($this->db,"SELECT csr FROM school_student WHERE sch_name='$Schoolname'")or die(mysqli_error($this->db)); 
    
         while($row3=mysqli_fetch_array($q1,MYSQLI_ASSOC)) 
         { 
          $csr[]= $row3; // Till here i am getting the values correctly, $csr[40,41,22,43] respectively 
         } 
    
         $matches = implode(',',$csr); //data value is coming here 
         $i=mysqli_query($this->db,"SELECT * FROM student_register WHERE csr IN $matches") or die(mysqli_error($this->db)); //$i is also wrking 
    
         if($i) { 
          while($ro=mysql_fetch_assoc($i)) { 
           $data1[]= $ro[uid_fk]; 
          } 
         }       
         return $data1; 
        } 
    } 
    ?> 
    
+0

Titel sollte eine kurze Beschreibung Ihrer Probleme sein, kein Logbuch von allem, was Sie versucht haben, das Problem zu lösen. :) – Reversal

+0

danke für die Korrektur –

Antwort

0

Das ist falsch:

$matches = implode(',',$csr); //data value is coming here 
$i = mysqli_query($this->db,"SELECT * FROM student_register WHERE csr IN $matches")or die(mysqli_error($this->db)); 
                     ^^^^^^^^ here 

Sie müssen Klammer für Ihre IN Klausel:

$i = mysqli_query($this->db,"SELECT * FROM student_register WHERE csr IN ($matches)")or die(mysqli_error($this->db)); 

Aber Sie sollten wirklich nicht Werte injizieren direkt in Ihre Abfragen. Stattdessen sollten Sie vorbereitete Anweisungen verwenden und die Werte binden.

+0

Die Werte von csr kommen aus der Datenbanktabelle 'school_student' –

+0

Jetzt zeigt es "unbekanntes Array in der Spalte" Fehler @jeroen –

Verwandte Themen