2016-07-23 114 views
0

這是我現在的代碼,它返回哈桑姆哈羅德配置文件爲JSON,這是完美的。我需要做的是將我的參數傳遞到查詢字符串中,而不是傳入名稱,以便在URL傳遞名稱時查詢從數據庫中返回該人員的配置文件。當我改名字Hassum哈羅德變量$名字,我得到以下錯誤:CodeIgniter - 返回參數行

未知列在 'where子句' SELECT名字,SHORT_NAME,名望,生物與個人資料,其中name = Hassum%20Harrod

'Hassum'

這是我的代碼現在:

控制器

public function getPerson($name) { 
    // loads the DBModel.php     
    $this->load->model('DBModel'); 

    $query = $this->db->query("SELECT name, short_name, reknown, bio FROM profile WHERE name = 'Hassum Harrod'"); 

    $data['profile'] = $query->row(); 

    $this->load->view('profileView', $data); 

}

查看

echo json_encode($profile); 

回答

1

請閱讀:http://www.codeigniter.com/user_guide/general/models.html

http://www.codeigniter.com/user_guide/database/query_builder.html

嘗試這種方式

添加這個方法將你的模型應該是這樣的

  // in your model 
     public function getNames($name) { 
      $data = array(); 
      $this->db->select(*); 
      $this->db->like('name', $name); 
      $query = $this->get('profile'); 
      if ($query->num_rows() > 0) { 
       foreach ($query->result_array() as $row) { 
        $data[] = $row; 
       } 
      } 

      return $data; 
     } 

控制器應該是這樣的

public function getPerson($name) { 

     $this->load->model('DBModel'); 

     $data = $this->DBModel->getNames($name); 

     // you can encode in json here 
     $data['profile'] = json_encode($data); 

     $this->load->view('profileView', $data); 
} 

http://www.codeigniter.com/user_guide/general/controllers.html

鑑於:

 echo $profile; 
0

您正在使用LIKE關鍵字查詢,所以我們可以假設會有從數據庫返回的結果不止一個。在這種情況下,您需要改爲$query->result()。其次,即使只有一個返回的行,此代碼:

$data['profile'] = $query->row() > 0;// assigning variable to condition (TRUE|FALSE) 

將返回布爾值,但不返回結果本身。

這是簡化代碼這一點,你可以檢查:

<?php 

$a = ['a', 'b', 'c']; 

var_dump($b = $a > 0);// TRUE 

隨意開始使用基本的例子,從文檔。它會幫助你的主要代碼:

$query = $this->db->query("YOUR QUERY"); 

$row = $query->row(); 

if (isset($row)) 
{ 
    echo $row->title; 
    echo $row->name; 
    echo $row->body; 
} 

再次,如果你期望只有一個可能的行數據庫,你可以試試這個代碼。但是,如果你不能確定是否會有幾種可能行,你必須使用的代碼程序來檢索是:

$query = $this->db->query("YOUR QUERY"); 

foreach ($query->result() as $row) 
{ 
    echo $row->title; 
    echo $row->name; 
    echo $row->body; 
} 

當你處理這件事的工作比你可以將對象或數組JSON字符串工作。

它將遵循語法:

$json = json_encode($row); 

如果返回了多行,這將是最容易從DB因爲數組很容易轉化TI JSON返回result_array()或row_array(),雖然有suitable solutions 。 畢竟,在方法開始加載的模型根本不使用。

Docs

+0

我曾嘗試DOC例子如上圖所示,但後來我得到的錯誤:未知列「巴羅特」在「where子句」 SELECT名字,SHORT_NAME,名望,生物與個人資料,其中name =巴羅特%20Bellingham – Jacqueline

+0

看來你首先需要'urldecode()'函數。在將變量傳遞給SQL語法之前,在'$ name'變量上使用它。像:'$ name = trim(urldecode($ name))'。 [文件](http://php.net/manual/en/function.urldecode.php)。嘗試使用propper代碼和編碼標準。在SQL查詢中對列名和表名使用反引號。 – Tpojka

+0

Tpojka你給我的片段完美地工作,謝謝你。這正是我需要的。 – Jacqueline