[英]Database problems using model in CodeIgniter
再次是關於CodeIgniter的問題。 我正在嘗試從數據庫中獲取信息,這並不難。 我獲取了所有數據,但想添加一個條件,author_id必須與$ id相同。 我的代碼:
<?php
class BookModel extends CI_Model {
public function get_book($id){
$this->load->database();
$query = $this->db->query('SELECT book_id, book_title, book_publisher, book_summary FROM books WHERE author_id = $id');
return $query->result();
}
}
?>
如果我回顯$ id,則顯示我的ID。 但是在SQL函數中卻失敗了。 另外,當我硬編碼一個數字
在哪里author_id = 1
它會加載詳細信息。
這是我得到的錯誤:
錯誤編號:1054
“ where子句”中的未知列“ $ id”
從其中where author_id = $ id的書籍中選擇book_id,book_title,book_publisher,book_summary
我究竟做錯了什么?
你有兩個問題。
首先,MySQL使用single =進行賦值和比較,而不是==。
其次,PHP中的變量僅以雙引號引起來,而不是單引號。
因此, '...$id'
將按字面意義解析為$id
,而不是變量$id
的值 。 轉換為雙引號。
或者,使用CI綁定-更好的安全性,而您不必擔心轉義,引號等問題。
$sql = 'SELECT ... FROM books WHERE author_id = ?';
$query = $this->db->query($sql, array($id));
由於您正在使用codeigniter,因此請使用ci數據庫類函數,它們將使您的任務更簡單,並且您不必擔心sql注入。您可以像這樣簡單地進行操作
public function get_book($id)
{
$this->load->database();
$this->db->select('book_id, book_title, book_publisher, book_summary');
$this->db->from('books');
$this->db->where('auther_id',$id);
$data=$this->db->get();
return $data->result();
}
改變這個
$query = $this->db->query("SELECT book_id, book_title, book_publisher, book_summary FROM books WHERE author_id =".$id);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.