使用CodeIgniter中的模型的数据库问题

时间:2017-05-01 09:27:08

标签: php mysql codeigniter

再次提出有关CodeIgniter的问题。我试图从我的数据库中获取信息,这并不是那么困难。我得到所有数据但想要添加条件,author_id必须与$ id相同。我的代码:

@Filter

如果我回显$ id,它会显示我的ID。但是在SQL函数中它失败了。此外,当我硬编码像

这样的数字时

WHERE author_id = 1

它可以正常加载。

这是我得到的错误:

  

错误号码:1054

     

未知栏' $ id'在' where子句'

     

SELECT book_id,book_title,book_publisher,book_summary FROM books   WHERE author_id = $ id

我做错了什么?

3 个答案:

答案 0 :(得分:1)

你有两个问题。

首先,MySQL使用single =进行赋值和比较,而不是==。

其次,PHP中的变量仅在双引号字符串中解析,而不是单个字符串。

因此,'...$id'将按字面解析为$id,而不是变量$id。转换为双引号。

或者,使用CI绑定 - 它更安全,您不必担心转义,引号等。

$sql = 'SELECT ... FROM books WHERE author_id = ?';
$query = $this->db->query($sql, array($id));

答案 1 :(得分:1)

因为你正在使用codeigniter,使用ci数据库类函数,它们会使你的任务更简单,你不必担心sql注入。你可以用这样简单的方式做到这一点

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl"> 
<div>
     <label class="switchnmn">
        <input type="checkbox" ng-change="stateChanged()" checked ng-model="checkBtn">
        <div class="slidernmn round"></div>
    </label>
    <b  ng-show="acceptrequest" style="font-size:15px">I am able to accept customer's any request date.</b>  
 
</div>
</div>

答案 2 :(得分:0)

更改此

$query = $this->db->query("SELECT book_id, book_title, book_publisher, book_summary FROM books WHERE author_id =".$id);