PHP与数据库中的查询
查询构造器
典型用法:
1 | $rows = (new \yii\db\Query()) |
上面的代码将会生成并执行如下的SQL语句,其中 :last_name
参数绑定了 字符串 'Smith'
。
1 | SELECT `id`, `email` |
创建查询
1 | $query->select(['user.id AS user_id', 'email']); |
SQL 语句当中的 WHERE
子句:
- 字符串格式,例如:
'status=1'
- 哈希格式,例如:
['status' => 1, 'type' => 2]
- 操作符格式,例如:
['like', 'name', 'test']
- 对象格式,例如:
new LikeCondition('name', 'LIKE', 'test')
1 | $query->where('status=1'); |
千万不要像如下的例子一样直接在条件语句当中嵌入变量,特别是当这些变量来源于终端用户输入的时候, 因为这样我们的软件将很容易受到 SQL 注入的攻击。(嘘~我的代码里就这样写过,悄咪咪的)
1 | // 危险!千万别这样干,除非你非常的确定 $status 是一个整型数值。 |
1 | $status = 10; |
这次作业中的查询主要用了like操作符:
like:第一个操作数应为一个字段名称或 DB 表达式, 第二个操作数可以使字符串或数组, 代表第一个操作数需要模糊查询的值。比如,[‘like’, ‘name’, ‘tester’] 会生成 name LIKE ‘%tester%’。 如果范围值是一个数组,那么将会生成用 AND 串联起来的 多个 like 语句。例如,[‘like’, ‘name’, [‘test’, ‘sample’]] 将会生成 name LIKE ‘%test%’ AND name LIKE ‘%sample%’
过滤条件
filterWhere()用于通常需要忽略用户输入的空值。
andfilterWhere()类似于andWhere()
使用yii\helpers\Html::submitButton() 方法生成提交按钮