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

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 7890|回复: 0

[数据操作] 使用SQL语句进行查询

[复制链接]
发表于 2012-8-4 16:29:42 | 显示全部楼层 |阅读模式
虽然spModel的CURD函数已经可以支撑日常开发大部分的数据库操作,但是在对数据表进行较为复杂的查询或者是操作的时候,spModel提供了针对SQL语句查询操作的两个函数。

从初学者的角度我们建议一开始不必过于深究数据库和SQL语句方面的知识,原因有二:首先实践工作中,在封装良好的框架下进行数据库开发,基本不需要使用到这些知识,仅仅是类似对PHP的数组进行操作就已经足够了;另一个是从和许多初学者的接触中发现,数据库部分的知识已经成为了编程入门的一个较难点,很容易因为数据库理论的深奥与无法实践而失去信心。

请注意findSql和runSql函数之间的区别:findSql是SQL语句查找时使用的,而runSql(query)是SQL语句更新/删除/新建的时候使用的。也就是说,findSql中的SQL语句主要以“SELECT”为开头,而runSql中的SQL语句以“UPDATE/DELETE/CREATE”开头。



findSql —— 使用SQL语句进行查找操作,等于进行find,findAll等操作

用法:findSql($sql)

参数:$sql,字符串,需要进行查找的SQL语句

例子:

上例中清理广告留言后的数据表如下:

  1. // 这里我们将对留言本分析一下,归纳一下留言者名单以及各个留言者的留言总数。
  2. // 首先准备SQL语句
  3. $sql = "SELECT name, count(name) as gbsum FROM spgb_gb WHERE 1 GROUP BY name";
  4. $gb = spClass('gb'); // 初始化留言本模型类
  5. $result = $gb->findSql($sql); // 执行查找
  6. dump($result); // 输出结果
复制代码

返回:

如SQL语句执行成功并且获取到记录,则返回多维数组,形式与findAll返回结果相同。

如无法查找到记录,则返回FALSE。

这里要注意,在直接使用SQL语句的时候,请注意需要使用表全名(前缀+表名),上例中的gb表全名为spgb_gb。


这里说说对于SQL语句的测试,很多时候我们会遇到程序中SQL语句有问题,没有输出错误提示但是却无法达到预期的效果,这是实际开发中经常会遇到的问题。解决这个问题的一个好方法就是先输出SQL语句到浏览器上(echo $sql;),然后再将SQL语句放到PHPMyAdmin上面去执行一下,看看语句是否存在问题。


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

本版积分规则

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

GMT+8, 2020-2-21 08:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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