仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1711|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网站制作之有关数据检索的更多内容

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:43:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
可以在书上很方便地做标记,及时记下自己的心得体会。   </p> 有关数据检索的更多内容

咱们已晓得利用模子内置办法find()对数据库表停止数据检索的根基办法。find()办法切实其实十分壮大,并且咱们可使用它来完成庞杂的查询。咱们将会进修更多有关find()办法的内容,懂得若何经由过程它来履行庞杂的查询。咱们也将进修若何利用CakePHP供应的其他数据检索技能。
  有关find()办法的更多内容

find() 办法十分天真,它可以完成SQL言语中SELECT查询语句所能完成的一切了局。好比,咱们只检索书名以字母“A"开首并依照ISBN书号降序分列的前两本书的书号字段和作者名字字段,咱们曾需求写出上面这个SQL查询语句:
SELECT `Book`.`isbn`, `Book`.`title`, `Book`.`author_name`
FROM `books` AS `Book`
WHERE `Book`.`title` LIKE 'A%'
ORDER BY `Book`.`isbn` DESC
LIMIT 2;
在CakePHP中,咱们可以经由过程像上面如许利用find()办法来失掉一样的了局。
find(
      'all',
       array(
         'conditions' => array('Book.title' => 'LIKE A%'),
         'fields' => array(
                            'Book.isbn',
                            'Book.title',
                             'Book.author_name'
                     ),
         'order' => 'Book.isbn DESC',
         'limit'=>2
       )
   );
[ 在前提(condition)中,为字段添加上模子称号前缀(像写成Book.title而非title)是一个很好的习气。当咱们需求调取相干模子中的数据而且了局中有不异的字段称号时,这个习气就特别主要。别的它也改良了代码的清爽度
] find()办法承受两个参数:$type(类型)和$constraints(束缚)。$type(类型)是一个用来界说查询“类型”的字符串。$type可以设成上面这三品种型中的一个


  • all:find办法会依照给定的排序体例和个数限制前往一切合适前提的纪录。
  • first:这个办法只前往合适束缚前提的首笔记录
  • count:会前往查询了局中所包括纪录的总数目。
正如咱们从上一个例子中所看到那样,咱们可以以联系关系数组(associative array)的模式在第二个参数 $constraints中指定其他查询束缚。$constraints参数的联系关系数组可以有以下键(key)


  • conditions(前提):前提(conditions)可使用于代替查询语句中的WHERE子句。默许值是1=1,这暗示没前提束缚。
  • fields(字段):查询了局应当前往的字段局限。假如没有指明,它会前往一切字段。当find()函数的第一个参数$type被设置成count时,该参数不成用。
  • order(排序):这个字符串界说了查询语句中ORDER BY子句的内容。假如order排序没有指明,那末SQL查询中将不会添加有ORDER BY子句。查询类型是count是,该参数也不成用。
  • limit(限制):该整数指了然前往纪录的最大数目。假如没指定limit,那末函数会前往一切合适前提的纪录。只要当查询类型是all时,它才可用。
  • offset(偏移值):这个参数界说了首个前往纪录的偏移值。默许值是0.只要当type参数是all时,该设置才无效。
为了便于读者更清晰地懂得这个概念,咱们将会疾速阅读上面这些标明了find()用法的例子:
1,假如你想晓得书名以字母“A”开首的书的数量,咱们会在BooksController(Books掌握器中)添加以下代码:
$count = $this->Book->find('count', array('conditions' =>  
            array('Book.title' => 'LIKE A%'));
It executes the following SQL query:
它会履行以下SQL查询
  SELECT COUNT(*) AS `count` FROM `books` AS `Book` WHERE  
       `Book`.`title` LIKE 'A%';
find()办法的$type参数设置成count时,查询前往的了局是一个整数。在这个例子中, $count变量的值多是2.
2,假如咱们想查询id最大书本所对应的书号(ISBN)和书名,咱们会利用上面这个代码
  
$book = $this->Book->find('first',
                 array(
                         'fields' => array('isbn', 'title'),                  
                         'order' => 'Book.id DESC'
                       )
                             );
该代码会履行以下SQL语句
SELECT `Book`.`isbn`, `Book`.`title` FROM `books` AS `Book`
    WHERE 1 = 1 ORDER BY `Book`.`created` DESC LIMIT 1;
贮存在$book变量中的了局会是上面这个模样:

    Array
    (
        [Book] => Array
            (
                [isbn] => 1847192971
                [title] => Building Powerful and Robust Websites
                           with Drupal 6
            )
    )
3,假如你想找出某个作者所写的所得书并依照书名来排序,那末上面这个代码可以到达此目标:

    $books = $this->Book->find('all',
                                  array(
                                    'fields' => array('title'),
                                    'conditions' => array(
                           'Book.author_name' => 'LIKE David Barnes'
                                    ),
                                    'order' => 'Book.title ASC'
                                  )
                 );
下面这段代码将会履行上面这个SQL查询

    SELECT `Book`.`title` FROM `books` AS `Book` WHERE `Book`.`author_
            name` LIKE 'David Barnes' ORDER BY
    `Book`.`title` ASC
下面这段查询会前往以下的了局:

    Array
    (
        [0] => Array
            (
                [Book] => Array
                    (
                        [title] => How to write computer books
                    )
            )
        [1] => Array
            (
                [Book] => Array
                    (
                        [title] => How not to write a technical book!
[ 请注重,find()办法的$type参数分离被设置成 first和all时,前往的了局会有所区分。当它被设置成first时,前往的数组是一个联系关系数组,个中包括有书的信息。当类型参数被设置成all时, 前往的是一个联系关系数组的数组,每一个联系关系数组内包括有一本书的相干信息
] 在下面这些例子中,咱们进修了find()办法中利用的一些十分复杂的前提限制。在实践的使用法式中,查询所用的前提要庞杂的多,能够会带有很多嵌套前提和各类类型的逻辑和前提运算符。咱们接上去将会存眷$constraints参数中的condition键,并进修若何利用find()来完成一些庞杂的工作。
会有很多高手的鼓励,新手的支持,慢慢你劲头就十足,有更多的信心和兴趣去学。
海妖 该用户已被删除
沙发
发表于 2015-2-4 06:16:26 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
金色的骷髅 该用户已被删除
板凳
发表于 2015-2-27 12:41:32 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
老尸 该用户已被删除
地板
发表于 2015-3-3 03:10:49 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
小魔女 该用户已被删除
5#
发表于 2015-3-6 01:45:50 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
小女巫 该用户已被删除
6#
发表于 2015-3-12 18:29:23 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-20 01:23:39 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
莫相离 该用户已被删除
8#
发表于 2015-3-25 10:05:57 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
变相怪杰 该用户已被删除
9#
发表于 2015-3-25 11:18:48 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
谁可相欹 该用户已被删除
10#
发表于 2015-4-26 08:11:20 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
飘灵儿 该用户已被删除
11#
发表于 2015-4-29 14:20:47 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
12#
发表于 2015-4-30 11:32:40 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
精灵巫婆 该用户已被删除
13#
发表于 2015-5-11 16:42:48 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
乐观 该用户已被删除
14#
发表于 2015-5-12 10:33:37 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
因胸联盟 该用户已被删除
15#
发表于 2015-6-20 11:15:25 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
深爱那片海 该用户已被删除
16#
发表于 2015-6-20 20:14:50 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
活着的死人 该用户已被删除
17#
发表于 2015-6-30 08:45:41 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
冷月葬花魂 该用户已被删除
18#
发表于 2015-7-11 18:12:56 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
爱飞 该用户已被删除
19#
发表于 2015-7-11 18:19:48 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
再见西城 该用户已被删除
20#
发表于 2015-7-20 19:16:13 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 17:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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