SpeedPHP数据库操作教程三,使用SQL进行复杂查询
时间:2009-12-08
来源:互联网
虽然spModel的CURD函数已经可以支撑日常开发大部分的数据库操作,但是在对数据表进行较为复杂的查询或者是操作的时候,spModel提供了针对SQL语句查询操作的两个函数。
query —— 执行SQL语句,相等于执行新增,修改,删除等操作。
用法:query($sql)
参数:$sql,字符串,需要执行的SQL语句
例子:
在上一章的留言本数据中,我们已经增加了许多数据,数据表部分如下:
23 小李 晚上给我回复 2009-10-26 10:04:53 218.82.32.12
24 robot 广告留言 2009-11-11 10:04:53 218.13.23.12
25 robot 广告留言 2009-11-11 10:04:53 218.13.23.12
26 robot 广告留言 2009-11-13 10:04:53 218.13.23.12
27 大将军 广告留言 2009-11-14 10:04:53 218.82.32.12
28 大将军 广告留言 2009-11-14 10:04:53 218.82.32.12
29 小李 留言本很多广告留言 2009-11-14 10:04:53 218.82.32.12
返回:
返回TRUE则是语句执行成功,无论有无对数据表记录进行了操作,只要操作正常执行则返回TRUE。
返回FALSE是语句执行失败。
findSql —— 使用SQL语句进行查找操作,等于进行find,findAll等操作
用法:findSql($sql)
参数:$sql,字符串,需要进行查找的SQL语句
例子:
上例中清理广告留言后的数据表如下:
返回:
如SQL语句执行成功并且获取到记录,则返回多维数组,形式与findAll返回结果相同。
如无法查找到记录,则返回FALSE。
同时,在使用find,create等操作的时候,也同样可以使用dumpSql来获取最后执行的SQL语句,以检查语句是否正确。下面介绍一下dumpSql函数。
dumpSql —— 返回最后执行的SQL语句供分析
用法:dumpSql()
例子:
最后将输出:
SELECT spgb_gb.* FROM spgb_gb WHERE 'name' = '小李' limit 1
返回:
返回最后执行的SQL语句。
以上是spModel对SQL语句本身的支持函数,在简便的数据表CRUD操作基础上再加入直接的SQL执行支撑,无疑为我们的开发带来更多方便。
到此我们已经学习了spModel的全部操作函数,接下来我们可以针对不同的PHP系统需求,对spModel进行继承扩展,以便实现更简便和强大的功能。
本文地址:http://speedphp.com/post/spmodel-run-sql.html
引用
从初学者的角度我们建议一开始不必过于深究数据库和SQL语句方面的知识,原因有二:首先实践工作中,在封装良好的框架下进行数据库开发,基本不需要使用到这些知识,仅仅是类似对PHP的数组进行操作就已经足够了;另一个是从和许多初学者的接触中发现,数据库部分的知识已经成为了编程入门的一个较难点,很容易因为数据库理论的深奥与无法实践而失去信心。
query —— 执行SQL语句,相等于执行新增,修改,删除等操作。
用法:query($sql)
参数:$sql,字符串,需要执行的SQL语句
例子:
在上一章的留言本数据中,我们已经增加了许多数据,数据表部分如下:
23 小李 晚上给我回复 2009-10-26 10:04:53 218.82.32.12
24 robot 广告留言 2009-11-11 10:04:53 218.13.23.12
25 robot 广告留言 2009-11-11 10:04:53 218.13.23.12
26 robot 广告留言 2009-11-13 10:04:53 218.13.23.12
27 大将军 广告留言 2009-11-14 10:04:53 218.82.32.12
28 大将军 广告留言 2009-11-14 10:04:53 218.82.32.12
29 小李 留言本很多广告留言 2009-11-14 10:04:53 218.82.32.12
复制代码
|
返回:
返回TRUE则是语句执行成功,无论有无对数据表记录进行了操作,只要操作正常执行则返回TRUE。
返回FALSE是语句执行失败。
findSql —— 使用SQL语句进行查找操作,等于进行find,findAll等操作
用法:findSql($sql)
参数:$sql,字符串,需要进行查找的SQL语句
例子:
上例中清理广告留言后的数据表如下:
复制代码
|
返回:
如SQL语句执行成功并且获取到记录,则返回多维数组,形式与findAll返回结果相同。
如无法查找到记录,则返回FALSE。
引用
这里要注意,在直接使用SQL语句的时候,请注意需要使用表全名(前缀+表名),上例中的gb表全名为spgb_gb。
引用
这里说说对于SQL语句的测试,很多时候我们会遇到程序中SQL语句有问题,没有输出错误提示但是却无法达到预期的效果,这是实际开发中经常会遇到的问题。解决这个问题的一个好方法就是先输出SQL语句到浏览器上(echo $sql;),然后再将SQL语句放到PHPMyAdmin上面去执行一下,看看语句是否存在问题。
同时,在使用find,create等操作的时候,也同样可以使用dumpSql来获取最后执行的SQL语句,以检查语句是否正确。下面介绍一下dumpSql函数。
dumpSql —— 返回最后执行的SQL语句供分析
用法:dumpSql()
例子:
复制代码
|
最后将输出:
SELECT spgb_gb.* FROM spgb_gb WHERE 'name' = '小李' limit 1
返回:
返回最后执行的SQL语句。
以上是spModel对SQL语句本身的支持函数,在简便的数据表CRUD操作基础上再加入直接的SQL执行支撑,无疑为我们的开发带来更多方便。
到此我们已经学习了spModel的全部操作函数,接下来我们可以针对不同的PHP系统需求,对spModel进行继承扩展,以便实现更简便和强大的功能。
引用
另外,很多时候直接使用SQL语句都是在面对关联表查询或者是关联表更新等情况,也就是关联表的操作,同时关联表也是数据库操作中并不少见但较难理解的部分。我们可以高兴的是,sp框架除了强大的spModel数据表操作外,也提供针对关联表进行操作的spLinker程序,简单易用,极大地简化了关联表的操作。需要学习spLinker的朋友请参阅spModel附属类的相关教程。
本文地址:http://speedphp.com/post/spmodel-run-sql.html
作者: jake 发布时间: 2009-12-08
谢谢了,正在想这个问题呢,太好了,
作者: singmj 发布时间: 2009-12-19
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28