2016-04-08 1 views
-3

Я работаю с кодом в PHP & MySQL с MySQLi. Существуют два файла .php, в которых значения массива должны передаваться из одного файла в другой через вызов функции.Я искал SO, нашел несколько хороших статей, попытался реализовать его. До сих пор я не нашел способ разрешить его с помощью PHP и MySQL

Первый файл php содержит $data['uid_fk'];, где мне нужно отобразить uid_fk из таблицы student_register, которая извлекается через вызов функции Welcome_Students($uid).

Во втором файле .php желаемый результат получен в функции, где я прокомментировал как // До сих пор я правильно получаю значения, $csr[40,41,22,43] соответственно. Я хочу проверить значения в $csr($csr[0], $csr[1], $csr[2], $csr[3]) в предложении Where SELECT uid_fk FROM student_register WHERE csr IN $matches. В таблице более одного uid_fk, я хочу отобразить все uid_fk на странице welcome_students.php. Как достичь этого результата?

  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

Название должно быть кратким описанием ваших проблем, а не журналом всех ваших попыток решить проблему. :) – Reversal

+0

спасибо за исправление –

ответ

0

Это неправильно:

$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 

Вы должны скобку для пункта IN:

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

Но вы должны действительно не вводить значения непосредственно в запросах. Вместо этого вы должны использовать подготовленные инструкции и привязывать значения.

+0

Значения csr поступают из таблицы базы данных «school_student» –

+0

Теперь его показ «Неизвестный массив в столбце» ошибка @jeroen –