再次提出有关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
我做错了什么?
答案 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);