2014-12-23 2 views
0

Я знаю, что это не очень хорошая практика для запросов в контроллере, но по какой-то причине они не работают в этом классе контроллера. Я не слишком разбираюсь в кодедигнере, поэтому любая помощь приветствуется, поскольку я понятия не имею, как еще это настроить для правильной работы. У меня есть сценарий ajax, который получает информацию.codeigniter mysql-запросы не работают

Вот мой код:

<?php 

class Phonecall extends CI_Controller { 

    public function index() { 

     /*$con = mysqli_connect('localhost','root','root','MYDB'); 
     if (!$con) { 
      die ('Could not connect: ' . mysqli_error($con)); 
     }*/ 
     //$operatorId = $_SESSION['Oper']['OperatorID']; //I also cannot figure out how to get $_SESSION information either 
     //$sql = "SELECT phone_number FROM incoming_calls WHERE OperatorID='${operatorId}'"; 
     //$result = mysqli_query($con,$sql); 
     $query = $this->db->query("SELECT phone_number FROM MYDB.incoming_calls");// WHERE OperatorID='${operatorId}'"); 

     while ($row = $query->row_array()) { 
      $number = $row['phone_number']; 
     } 

     /*$sql = "SELECT Username, UserID, Name 
      FROM tblUsers 
      WHERE PhoneHome='999-999-9999' OR PhoneCell='999-999-9999' OR PhoneWork='999-999-9999'"; 
     */ 

     $query = $this->db->query("SELECT Username, UserID, Name 
      FROM MYDB.tblUsers 
      WHERE PhoneHome='999-999-9999' OR PhoneCell='999-999-9999' OR PhoneWork='999-999-9999'"); 

     while ($row = $query->row_array()) { 
      $userArray[] = array("name" => $row['Name'], "username" => $row['Username'], "user_id" => $row['UserID']); 
     } 

     if (!empty($userArray)) { 
      echo json_encode($userArray); 
     } 

     if (isset($_POST["drop"])) { 
      $query = $this->db->query("DELETE FROM MYDB.incoming_calls 
       WHERE phone_number = $number 
       LIMIT 1"); 
      if (!$result) { 
       die ('Could not drop row: '); 
      } 
     } 

     $this->db->close(); 
    } 
} 

?> 

Вот мои JS:

var user = new Array(); 
    var user_id = new Array(); 
    var name = new Array(); 

    $.get(baseURL + 'phonecall/index', function(data) {//where baseURL is defined 
     var loginInfo = jQuery.parseJSON(data); 

     for (var i = 0; i < loginInfo.length; ++i) { 
      name[i] = loginInfo[i].name; 
      user[i] = loginInfo[i].username; 
      user_id[i] = loginInfo[i].user_id; 
     } 
    } 

Я не знаю много о рамках, и я пытаюсь узнать, я не знаю, как сделайте этот файл доступ к данным $ _SESSION. Любая помощь приветствуется.

+0

Эти запросы возвращают данные, когда они запущены. – Juan

+1

Что не работает точно? вы получаете сообщение об ошибке? Что касается данных сеанса, я советую вам прочитать руководство: https://ellislab.com/codeigniter/user-guide/libraries/sessions.html – Patrick

+0

Ошибка, которую я получаю, - это ошибка сервера 500 в консоли когда скрипт ajax пытается запустить. Если я запустил это на своей локальной машине и немного изменил код для запросов mysqli, все будет работать отлично. Это не дает мне никакой другой информации, кроме ошибки сервера 500. – Juan

ответ

0

Всегда используйте модель для запросов БД.

Для первого запроса используйте следующий код:

$this->db->select("phone_number"); 
$this->db->from("incoming_calls"); 
$query = $this->db->get(); 
return $query->result_array(); 

Для использования secound запроса этого:

$this->db->select("Username, UserID, Name"); 
$this->db->from("tblUsers"); 
$this->db->where("PhoneHome,'999-999-9999'"); 
$this->db->where("PhoneCell,'999-999-9999'"); 
$this->db->where("PhoneWork,'999-999-9999'"); 
$query = $this->db->get(); 
return $query->result_array(); 

Будьте уверены, чтобы сделать 2 разные функции для запросов в модели.

Затем на вашей стороне контроллера используйте следующий код:

$data['first_record'] = $this->your_modal_name->your_first_function_name(); 
$data['secound_record'] = $this->your_modal_name->your_second_function_name(); 

Затем запустите эти данные в foreach, и это даст вам запись, которую вы хотите.

Смежные вопросы