簡體   English   中英

CodeIgniter中使用模型的數據庫問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM