2013-05-14 2 views
0

Я tryng, чтобы получить этот код, чтобы работать (вероятно, это невозможно, но только, чтобы убедиться, что я спрашиваю):Run синхронный MySQLi запрос от функции

$query = "SELECT `id`,`department_name`,`operator_id`,`title`,`priority`,`created_time`,`ticket_status` FROM ".$SupportTicketsTable." WHERE `user_id`=".$_SESSION['id'] ; 
    $prepared = $stmt->prepare($query); 
    if($prepared){ 
     if($stmt->execute()){ 
      $stmt->store_result(); 
      $result = $stmt->bind_result($id, $dname, $opid, $title, $priority, $dat, $status); 
      $departments=array('response'=>'ret','tickets'=>array()); 
      $departments['tickets']['user']=array(); 
      if($stmt->num_rows>0){ 
       while (mysqli_stmt_fetch($stmt)) { 
        switch ($status) { 
         case 0: 
          $stat='Closed'; 
          break; 
         case 1: 
          $stat='Open'; 
          break; 
         case 2: 
          $stat='Under Assignment'; 
          break; 
        } 
        switch ($priority) { 
         case 0: 
          $stat='Low'; 
          break; 
         case 1: 
          $stat='Medium'; 
          break; 
         case 2: 
          $stat='High'; 
          break; 
         case 3: 
          $stat='Urgent'; 
          break; 
        } 
        if(isset($_SESSION['operators'][$opid])) 
         $opname=$_SESSION['operators'][$opid]; 
        else{ 
         retrive_operators(); 
         $opname=$_SESSION['operators'][$opid]; 
        } 
        $departments['tickets']['user'][]=array('id'=>$id,'dname'=>$dname,'opname'=>$opname,'title'=>$title,'priority'=>$priority,'date'=>$dat,'status'=>$status,"action"=>'<div class="btn-group"><button class="btn btn-info editdep" value="'.$id.'"><i class="icon-edit"></i></button><button class="btn btn-danger remdep" value="'.$id.'"><i class="icon-remove"></i></button></div>'); 
       } 
      } 
     } 
     else 
      echo json_encode(array(0=>mysqli_stmt_error($stmt))); 
    } 
    else 
     echo json_encode(array(0=>mysqli_stmt_error($stmt))); 

и

function retrive_operators(){ 
if(isset($_SESSION['name'])){ 
    $mysqli = new mysqli($Hostname, $Username, $Password, $DatabaseName); 
    $stmt = $mysqli->stmt_init(); 
    if($stmt){ 
     $query = "SELECT `id`,`name` FROM ".$SupportUserTable." WHERE status='1' OR status='2'" ; 
     $prepared = $stmt->prepare($query); 
     if($prepared){ 
      if($stmt->execute()){ 
       $stmt->store_result(); 
       $result = $stmt->bind_result($id, $name); 
       if($stmt->num_rows>0){ 
        $_SESSION['operators']=array(); 
        while (mysqli_stmt_fetch($stmt)) { 
         $_SESSION['operators'][$id]=$name; 
        } 
       } 
      } 
     } 
    } 
} 
} 

Есть способ запустить их таким образом? В настоящий момент это говорит о том, что $Hostname, $Username, $Password, $DatabaseName не определены (но они, в основном, устраняют первый запуск функции mysqli), похоже, что он не может прочитать var, который я установил в начале файла, перед каждым условием или функцией , сразу после session_start().
Эти ошибки (линия соответствует отчётный код):

[14-May-2013 20:34:35 UTC] PHP Notice: Undefined variable: Hostname in C:\xampp\htdocs\php\function.php on line 983 

[14-May-2013 20:34:35 UTC] PHP Notice: Undefined variable: Username in C:\xampp\htdocs\php\function.php on line 983 

[14-May-2013 20:34:35 UTC] PHP Notice: Undefined variable: Password in C:\xampp\htdocs\php\function.php on line 983 

[14-May-2013 20:34:35 UTC] PHP Notice: Undefined variable: DatabaseName in C:\xampp\htdocs\php\function.php on line 983 

[14-May-2013 20:34:36 UTC] PHP Notice: Undefined variable: SupportUserTable in C:\xampp\htdocs\php\function.php on line 986 

[14-May-2013 20:34:36 UTC] PHP Notice: Undefined index: operators in C:\xampp\htdocs\php\function.php on line 823 


Благодаря

ответ

0

Вы имеете непосредственную проблему с видимости переменных. Читать Variable scope и попробовать

function retrive_operators(){ 
    global $Hostname, $Username, $Password, $DatabaseName; 
    ... 

или передавать их в качестве параметров

function retrive_operators($Hostname, $Username, $Password, $DatabaseName){ 
.... 

, а затем вызвать функцию

retrive_operators($Hostname, $Username, $Password, $DatabaseName); 
+0

большое спасибо! – Razorphyn

+0

@Dheed Добро пожаловать: D – peterm