1.原生的语句(需要加参数绑定防止sql注入)
$post = Yii::$app->db->createCommand('SELECT * FROM post WHERE id=:id AND status=:status')
->bindValue(':id', $_GET['id'])
->bindValue(':status', 1)
->queryOne();
b.其他
Yii::$app->db->createCommand('UPDATE post SET status=1 WHERE id=1')
->execute();
c.其他常用
// INSERT (table name, column values)
Yii::$app->db->createCommand()->insert('user', [
'name' => 'Sam',
'age' => 30,])
->execute();
// UPDATE (table name, column values, condition)
Yii::$app->db->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();
// DELETE (table name, condition)
Yii::$app->db->createCommand()->delete('user', 'status = 0')->execute();
2.构建查询生成器(只有查询操作,内有参数绑定,安全性高。内容较多见文档 http://www.yiichina.com/doc/guide/2.0/db-query-builder)
3.AR类(继承关系所以可以使用查询生成器方法)
根据主键获取数据行是比较常见的操作,所以 Yii 提供了两个快捷方法:
- yii\db\ActiveRecord::findOne(): 返回一个 AR 实例,填充于查询结果的第一行数据。
- yii\db\ActiveRecord::findAll():返回一个 AR 实例的数据,填充于查询结果的全部数据。