请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 5748|回复: 0

[数据模型] OR,LIKE、IN查询

[复制链接]
发表于 2012-8-4 17:03:06 | 显示全部楼层 |阅读模式

在SpeedPHP框架的数据库查询操作中,条件(where)为OR、LIKE或者IN的时候,可以通过find/findAll的方法来查询:


使用find/findAll

在find/findAll函数的参数里面,第一个参数$condition可以为字符串格式,代表了WHERE后面的条件。举例:

在英文单词表中,模糊查询关键字为“be”的英文单词:

$g->findAll(" word like '%be%'");

查询用户ID是12,13,15多个ID的用户

$g->findAll(" uid in( 12, 13, 15 ) ");

查询用户名中带“c”字母的用户或者ID是24,43,72的用户

$g->findAll(" uid like '%c%' OR uid in( 24, 43, 72 ) ");


注意提交参数安全

在使用字符串格式为查询条件的时候,需要注意字符串中的提交参数并无经过SQL过滤,需要自行通过spModel的escape函数来进行过滤。

和字符串作为查询条件不同,用数组作为find/findAll的查询条件的时候,spModel会自动过滤数组中的值,防止SQL注入。

假设$this->spArgs('q')是提交的模糊查询关键字:

$g = spClass('m_articles');

$q = $g->escape('%', $this->spArgs('q') .'%' );

$results = $g->findAll(" title like $q ");// 由于escape或自动加入单引号,所以这里$q不需要引号

echo $g->dumpSql();

从上面例子可以学习到如何使用escape来过来提交数据,并且在模糊查询的情况如何构造查询条件。


您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2020-2-19 21:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表