1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [8周,续] 2 00:00:02,000 --> 00:00:04,000 [戴维·J·马兰] [哈佛大学] 3 00:00:04,000 --> 00:00:08,000 这是CS50。[CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> 这是CS50,所以这是在这里的第8周结束。 5 00:00:13,000 --> 00:00:16,000 当然,我们也有一个位的飓风本周早些时候, 6 00:00:16,000 --> 00:00:19,000 所以,现在真的是只有你和我在此讲学厅, 7 00:00:19,000 --> 00:00:22,000 但今天,我们继续我们的谈话,关于PHP 8 00:00:22,000 --> 00:00:25,000 关于Web编程,我们还引进的想法 9 00:00:25,000 --> 00:00:29,000 数据库,特别是一个叫MySQL,这是非常流行的这些天, 10 00:00:29,000 --> 00:00:34,000 这在很大程度上是因为它的可扩展性,以及因为它是自由和开放源码。 11 00:00:34,000 --> 00:00:37,000 >> 但首先,看看我们离开的最后一次。 12 00:00:37,000 --> 00:00:40,000 回想一下,我们正在寻找在几个大一IMS的例子, 13 00:00:40,000 --> 00:00:44,000 这是可怕的形式,我想出了一些15 +年前 14 00:00:44,000 --> 00:00:49,000 为了让学生在校园内寄存器大一学生校内体育 15 00:00:49,000 --> 00:00:52,000 而其实不必长途跋涉了穿过院子到威格尔斯沃的 16 00:00:52,000 --> 00:00:56,000 滑动物理一张纸,下面的一些监考的大门。 17 00:00:56,000 --> 00:00:59,000 相反,我们提出了网上,但做到这一点,我们需要利用 18 00:00:59,000 --> 00:01:03,000 一些技术,所以,我们需要HTML超文本标记语言, 19 00:01:03,000 --> 00:01:07,000 而这又是与您的标记语言,使网页结构。 20 00:01:07,000 --> 00:01:10,000 >> 使用CSS位,这些天,级联样式表, 21 00:01:10,000 --> 00:01:16,000 据此,我们使用的语法稍有不同使用风格化的网页, 22 00:01:16,000 --> 00:01:19,000 而HTML是所有关于其结构。 23 00:01:19,000 --> 00:01:21,000 我们还需要引进一种Web编程语言。 24 00:01:21,000 --> 00:01:25,000 在这种情况下,我们将使用PHP,PHP是怎么回事,让我们 25 00:01:25,000 --> 00:01:28,000 动态输出内容以及编程的东西,如 26 00:01:28,000 --> 00:01:33,000 发送电​​子邮件的情况下,就说明我们留下上周。 27 00:01:33,000 --> 00:01:35,000 >> 回想一下,这个代码是在2份。 28 00:01:35,000 --> 00:01:38,000 一,我们有froshims3.php的, 29 00:01:38,000 --> 00:01:42,000 这主要是标记与HTML表单里面的, 30 00:01:42,000 --> 00:01:45,000 这里的CSS样式属性一点点 31 00:01:45,000 --> 00:01:48,000 这样的形式本身就可以在页面上居中,但除此之外, 32 00:01:48,000 --> 00:01:51,000 我们有一些有代表性的形式输入,文本字段,复选框, 33 00:01:51,000 --> 00:01:55,000 一些单选按钮,选择菜单,和一个提交按钮。 34 00:01:55,000 --> 00:02:01,000 通过这种形式,我们提交的文件,显然是被称为register3.php, 35 00:02:01,000 --> 00:02:04,000 这本身看起来有点像这样。 36 00:02:04,000 --> 00:02:08,000 现在,大多数的代码,召回,register3.php的是所有有关电子邮件。 37 00:02:08,000 --> 00:02:11,000 的形式提交,以确保它没有一点点的验证 38 00:02:11,000 --> 00:02:14,000 的字段实际上是提供了预期。 39 00:02:14,000 --> 00:02:18,000 然后,我们调用一些PHP的功能,稍微使用新的语法, 40 00:02:18,000 --> 00:02:20,000 即使它借用C. 41 00:02:20,000 --> 00:02:24,000 >> 箭头操作符使我们能够利用一些所谓的面向对象的编程。 42 00:02:24,000 --> 00:02:27,000 我们不会进入任何详细说明,但现在知道 43 00:02:27,000 --> 00:02:31,000 它是一种与对象相关的功能, 44 00:02:31,000 --> 00:02:34,000 这是一种特殊类型的结构,因为我们看到在C. 45 00:02:34,000 --> 00:02:37,000 但现在,只需要信仰,这是使用正确的语法 46 00:02:37,000 --> 00:02:41,000 当使用一个库,这样PHPMailer的图书馆。 47 00:02:41,000 --> 00:02:44,000 然后由这个文件的结尾,我们动态生成的电子邮件 48 00:02:44,000 --> 00:02:47,000 发送到了我的jharvard@cs50.net帐户 49 00:02:47,000 --> 00:02:50,000 从我的jharvard@cs50.net帐户, 50 00:02:50,000 --> 00:02:54,000 并通知用户,因此,他们已经注册了这项运动。 51 00:02:54,000 --> 00:02:57,000 这是相当多的大一IMS网站所有这些年前 52 00:02:57,000 --> 00:03:00,000 当我实现它,当然,在不同的语言, 53 00:03:00,000 --> 00:03:02,000 但它显示了你的权力,你有可能 54 00:03:02,000 --> 00:03:05,000 现在,你不仅可以表达自己的编程方式 55 00:03:05,000 --> 00:03:08,000 在较低水平的语言,如C,但在​​一个更高的水平 56 00:03:08,000 --> 00:03:11,000 与这些非常现实世界的应用,如电子邮件,真正解决 57 00:03:11,000 --> 00:03:13,000 一些现实世界的问题。 58 00:03:13,000 --> 00:03:16,000 >> 现在,当然,即使我使用这个脚本来生成一些 59 00:03:16,000 --> 00:03:20,000 从jharvard@cs50.net,这确实是一个帐户的电子邮件动态 60 00:03:20,000 --> 00:03:23,000 我有机会,千万要相当小心,发送 61 00:03:23,000 --> 00:03:26,000 邮寄,实际上是你自己的帐户, 62 00:03:26,000 --> 00:03:30,000 以免事情让你在生活中一点点热水。 63 00:03:30,000 --> 00:03:35,000 随着中说,现在,让我们过渡到完全不同的问题解决了, 64 00:03:35,000 --> 00:03:37,000 保持状态。 65 00:03:37,000 --> 00:03:39,000 现在,这究竟是什么意思? 66 00:03:39,000 --> 00:03:42,000 该超文本传输​​协议HTTP, 67 00:03:42,000 --> 00:03:45,000 实际上是一个无状态的协议,这是什么意思, 68 00:03:45,000 --> 00:03:48,000 当你拉起来像Google.com,然后按下回车键 69 00:03:48,000 --> 00:03:51,000 通常,您的浏览器有一些种旋转图标,然后 70 00:03:51,000 --> 00:03:54,000 结果在某些网页的下载, 71 00:03:54,000 --> 00:03:57,000 那个小图标,然后停止转动,确实建议 72 00:03:57,000 --> 00:04:02,000 HTTP已经完成了某种连接到服务器,这就是它。 73 00:04:02,000 --> 00:04:05,000 HTTP是无状态的,在这个意义上,它并不能维持 74 00:04:05,000 --> 00:04:08,000 持久连接到服务器以同样的方式Skype的不 75 00:04:08,000 --> 00:04:11,000 或Gchat确实因为与​​HTTP 76 00:04:11,000 --> 00:04:15,000 假设是,一旦你获取一个网页就是这样。 77 00:04:15,000 --> 00:04:18,000 >> 现在,在现实中,这些天,如Facebook和谷歌地图的网站上 78 00:04:18,000 --> 00:04:21,000 和Twitter一样有很多更多的活力,即 79 00:04:21,000 --> 00:04:25,000 后该图标停止转动,你其实可以得到更多的更新 80 00:04:25,000 --> 00:04:29,000 从服务器,更多的鸣叫,更在Facebook上的状态更新和喜欢。 81 00:04:29,000 --> 00:04:33,000 但即使是使用的技术,我们将谈谈在一两个星期 82 00:04:33,000 --> 00:04:36,000 被称为称为JavaScript的Ajax使用的语言, 83 00:04:36,000 --> 00:04:38,000 但在一天结束时,HTTP是无状态的。 84 00:04:38,000 --> 00:04:42,000 但如果你想以某种方式记住用户的事情 85 00:04:42,000 --> 00:04:44,000 即使他们已经从服务器断开连接 86 00:04:44,000 --> 00:04:47,000 PHP不起你这样做的手段 87 00:04:47,000 --> 00:04:52,000 因为,我们看到了最后的时间,PHP有一些超全局变量, 88 00:04:52,000 --> 00:04:55,000 和一个超全局变量,同样,一个特殊的全局变量 89 00:04:55,000 --> 00:04:59,000 交给你的Web服务器和PHP本身。 90 00:04:59,000 --> 00:05:02,000 >> 你不必做任何事情,把它的值, 91 00:05:02,000 --> 00:05:05,000 迄今为止,我们已经看到了超全局的get和post。 92 00:05:05,000 --> 00:05:08,000 这是表单字段自动为您, 93 00:05:08,000 --> 00:05:11,000 以及一对夫妇的人,我们还没有看到。 94 00:05:11,000 --> 00:05:17,000 里面的$ _SERVER是服务器本身的一些特殊变量。 95 00:05:17,000 --> 00:05:22,000 什么是IP地址,协议,HTTP或HTTPS使用, 96 00:05:22,000 --> 00:05:25,000 你是什​​么样的请求方法之类的,所以有一些有趣的, 97 00:05:25,000 --> 00:05:29,000 有趣的细节的服务器,而事实上,用户,以及在那里。 98 00:05:29,000 --> 00:05:33,000 $ _COOKIE,这是这些东西叫做Cookie的存储。 99 00:05:33,000 --> 00:05:36,000 我们不会花时间对饼干本身的今天, 100 00:05:36,000 --> 00:05:40,000 但要知道,现在,Cookie是一小块的信息 101 00:05:40,000 --> 00:05:43,000 在Web浏览器,Web服务器可以种植 102 00:05:43,000 --> 00:05:46,000 在打开的RAM或电脑的硬盘驱动器 103 00:05:46,000 --> 00:05:49,000 来存储有关用户的信息,例如,他们的用户名 104 00:05:49,000 --> 00:05:52,000 因此,他们不必键入它每次登录或一些 105 00:05:52,000 --> 00:05:55,000 该用户的唯一的数字或标识符 106 00:05:55,000 --> 00:05:58,000 这样你就不必纠缠他们的同种问题 107 00:05:58,000 --> 00:06:00,000 在未来的偏好,但大多数的利益 108 00:06:00,000 --> 00:06:02,000 现在是$ _SESSION。 109 00:06:02,000 --> 00:06:07,000 >> 这,和其他人一样,就交给你了自动PHP的超全局, 110 00:06:07,000 --> 00:06:10,000 当你编写基于PHP的网站 111 00:06:10,000 --> 00:06:13,000 可以存储任何你想要的,字符串,整数, 112 00:06:13,000 --> 00:06:16,000 浮动点值,数组,对象, 113 00:06:16,000 --> 00:06:20,000 什么,你想要的,它可以让你以这样的方式将其存储 114 00:06:20,000 --> 00:06:23,000 即使用户访问你现在,然后 115 00:06:23,000 --> 00:06:26,000 回来一分钟或5分钟车程,因为现在 116 00:06:26,000 --> 00:06:28,000 他们把自己的时间,然后再点击一些其他的链接 117 00:06:28,000 --> 00:06:32,000 PHP将确保无论你把该会话中的超全局变量 118 00:06:32,000 --> 00:06:37,000 一分钟或5分钟前仍然会在那里当用户返回。 119 00:06:37,000 --> 00:06:40,000 和下方的罩超全局方式实行 120 00:06:40,000 --> 00:06:44,000 这些东西叫做cookies,但就目前而言,它只是一个抽象的概念 121 00:06:44,000 --> 00:06:47,000 据此,这是一种在程序上等同的购物车。 122 00:06:47,000 --> 00:06:50,000 无论你作为程序员,摆在那 123 00:06:50,000 --> 00:06:53,000 超全局关联数组将有一些分钟后, 124 00:06:53,000 --> 00:06:59,000 直到你删除它,或直到用户完全退出他或她的浏览器。 125 00:06:59,000 --> 00:07:02,000 >> 让我们来看看这件事是如何实际使用的例子。 126 00:07:02,000 --> 00:07:07,000 今天的代码块之间在counter.php 127 00:07:07,000 --> 00:07:09,000 我们有以下行。 128 00:07:09,000 --> 00:07:13,000 在这个文件开始的,我们一堆蓝色的意见,这是无趣的,现在。 129 00:07:13,000 --> 00:07:15,000 但在第13行,我们有一个新的生产线, 130 00:07:15,000 --> 00:07:18,000 在session_start,这其实也正是它说。 131 00:07:18,000 --> 00:07:20,000 它启动会话。 132 00:07:20,000 --> 00:07:25,000 它使您能够使用,大超全局变量$ _SESSION,它是那样简单。 133 00:07:25,000 --> 00:07:30,000 现在,如果我们继续看第16行,让我们揣摩这是什么网页也会做。 134 00:07:30,000 --> 00:07:35,000 如果(使用isset($ _SESSION [“反”])然后继续前进 135 00:07:35,000 --> 00:07:39,000 并存储在计数器变量,小写计数器, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION [“反击”。 137 00:07:42,000 --> 00:07:45,000 这似乎是声明一个局部变量称为计数器 138 00:07:45,000 --> 00:07:48,000 里面,它把一个副本,无论是内部的超全局 139 00:07:48,000 --> 00:07:52,000 称为会话的位置“计数器”。 140 00:07:52,000 --> 00:07:56,000 品,显然,这个小的局部变量计数器被初始化为0。 141 00:07:56,000 --> 00:08:01,000 >> 但那么几行之后,在26通知会话的复制计数器, 142 00:08:01,000 --> 00:08:06,000 其关键,有一个新的值赋给这是它的当前值加1。 143 00:08:06,000 --> 00:08:09,000 总之,这个文件似乎被更新 144 00:08:09,000 --> 00:08:13,000 一个计数器,存放在里面的会话超全局 145 00:08:13,000 --> 00:08:16,000 通过递增1,但它首先保留先前的值的副本 146 00:08:16,000 --> 00:08:20,000 通过将其存储在局部变量名为$计数器, 147 00:08:20,000 --> 00:08:22,000 然后在这里让我们来看看还有什么。 148 00:08:22,000 --> 00:08:24,000 原来,这是非常简单,只是HTML。 149 00:08:24,000 --> 00:08:29,000 在这个页面的底部,我们可以看到,我已经在第37行访问此网站 150 00:08:29,000 --> 00:08:33,000 计数器的次数,所以有一对夫妇有趣的功能。 151 00:08:33,000 --> 00:08:36,000 之一,这显然是一个变量,但它并不足够,只是把 152 00:08:36,000 --> 00:08:39,000 $计数器在你的HTML,因为身体的过程 153 00:08:39,000 --> 00:08:43,000 如果它只是中间的HTML PHP是要承担这只是HTML。 154 00:08:43,000 --> 00:08:48,000 你从字面上要计数器的显示在屏幕上。 155 00:08:48,000 --> 00:08:51,000 >> 而是由下降到PHP模式 156 00:08:51,000 --> 00:08:55,000 这一块的语法,我们可以动态插入的值 157 00:08:55,000 --> 00:08:58,000 非常相似的精神,我们所做的最后一次 158 00:08:58,000 --> 00:09:00,000 将值转换为字符串。 159 00:09:00,000 --> 00:09:04,000 事实上,这只是说这样的事情简直一个速记符号, 160 00:09:04,000 --> 00:09:12,000 打印(柜),即使是像printf(%s,计数器), 161 00:09:12,000 --> 00:09:14,000 甚至,你可能已经看到在网上或在教科书中, 162 00:09:14,000 --> 00:09:17,000 有一个函数在PHP称为回声 163 00:09:17,000 --> 00:09:20,000 做同样的事情,而所有这些都只是不再啰嗦的方式 164 00:09:20,000 --> 00:09:25,000 说<=。 165 00:09:25,000 --> 00:09:28,000 在这个情况下,你不需要把 166 00:09:28,000 --> 00:09:30,000 字PHP后的问号。 167 00:09:30,000 --> 00:09:34,000 这是速记符号,再次,我们刚才也看到了 168 00:09:34,000 --> 00:09:37,000 这是呼应一定的价值。 169 00:09:37,000 --> 00:09:39,000 >> 让我们来看看最终的结果,这实际上是。 170 00:09:39,000 --> 00:09:43,000 让我到我们counter.php文件, 171 00:09:43,000 --> 00:09:47,000 我们将看到,大卫犯了一个错误的代码播放。 172 00:09:47,000 --> 00:09:50,000 让我们去解决,无论他搞砸了, 173 00:09:50,000 --> 00:09:54,000 错误似乎是存在的,走了,上线37。 174 00:09:54,000 --> 00:09:59,000 根据这个页面的顶部,我曾访问此网站的0次。 175 00:09:59,000 --> 00:10:02,000 好吧,让我们继续前进,现在,在浏览器的顶部点击 176 00:10:02,000 --> 00:10:05,000 重新加载图标,然后单击“重新加载, 177 00:10:05,000 --> 00:10:12,000 现在我访问过的站点1次,2,3,4,5,6,7,8。 178 00:10:12,000 --> 00:10:16,000 事实上,如果我们看一下实际的源代码在此页面的源码是变化的, 179 00:10:16,000 --> 00:10:19,000 并注意到完全没有任何PHP,这是因为 180 00:10:19,000 --> 00:10:23,000 评价或解释PHP代码的服务器端, 181 00:10:23,000 --> 00:10:27,000 因此,这意味着PHP脚本的输出是什么,最终发送到浏览器, 182 00:10:27,000 --> 00:10:31,000 在这种情况下,一些原始的HTML和一些原始文本。 183 00:10:31,000 --> 00:10:33,000 这是怎么回事呢? 184 00:10:33,000 --> 00:10:37,000 >> 好了,有了几行代码,我能够存储 185 00:10:37,000 --> 00:10:40,000 坚持几秒钟的过程,或者如果我们等待了足够长的时间, 186 00:10:40,000 --> 00:10:44,000 分钟,甚至几个小时,一些价值的方式,使HTTP 187 00:10:44,000 --> 00:10:47,000 似乎有状态的,就好像我们保留 188 00:10:47,000 --> 00:10:51,000 连接到服务器,它只是记住什么,我告诉它最后一次, 189 00:10:51,000 --> 00:10:55,000 但在现实中,有一大堆的复杂性,引擎盖下的 190 00:10:55,000 --> 00:10:59,000 涉及饼干,让PHP给我这个错觉 191 00:10:59,000 --> 00:11:02,000 这个购物车类似的功能。 192 00:11:02,000 --> 00:11:05,000 现在,一个简单的例子,我们只是存储一个整数, 193 00:11:05,000 --> 00:11:08,000 但该功能会回来的,是很有价值的 194 00:11:08,000 --> 00:11:10,000 当我们开始谈论更复杂的项目, 195 00:11:10,000 --> 00:11:12,000 其中问题7。 196 00:11:12,000 --> 00:11:16,000 这是你的最后一个问题,在CS50。 197 00:11:16,000 --> 00:11:19,000 我知道,它是如此难过,但你会发现的是,我们要总结 198 00:11:19,000 --> 00:11:22,000 这学期的实际过渡 199 00:11:22,000 --> 00:11:25,000 从C的背景下,一定要PHP的背景下, 200 00:11:25,000 --> 00:11:27,000 但同时使用了同样的基本面 201 00:11:27,000 --> 00:11:29,000 我们已经讨论了一段时间。 202 00:11:29,000 --> 00:11:33,000 >> pset中7的目标是实现CS50金融, 203 00:11:33,000 --> 00:11:37,000 这是你自己的版本的雅虎财经,谷歌财经 204 00:11:37,000 --> 00:11:40,000 甚至是Etrade.com,让你有能力 205 00:11:40,000 --> 00:11:43,000 查阅股票价格对于给定的符号,但比这更 206 00:11:43,000 --> 00:11:48,000 你有能力来“买”和“卖”股票 207 00:11:48,000 --> 00:11:51,000 在不同的证券交易所上市交易的,因为本网页 208 00:11:51,000 --> 00:11:55,000 在这里建议,这是真的,我们已经开始在何种程度上 209 00:11:55,000 --> 00:11:59,000 问题集给你,你有一个登录表单的用户名和密码的要求。 210 00:11:59,000 --> 00:12:03,000 它有一个提交按钮,但此后,我们最终会看到, 211 00:12:03,000 --> 00:12:06,000 有没有什么打算,因为它引擎盖下的 212 00:12:06,000 --> 00:12:09,000 保持你实现注册新用户的能力, 213 00:12:09,000 --> 00:12:12,000 买入股票,卖出股票, 214 00:12:12,000 --> 00:12:14,000 其实看看目前的股票价格。 215 00:12:14,000 --> 00:12:17,000 >> 事实上,这是因为现实世界是可能的,因为我们做了 216 00:12:17,000 --> 00:12:20,000 包括了一些代码,可以让你与一个单一的功能 217 00:12:20,000 --> 00:12:25,000 雅虎财经,奇妙提供免费的数据查询 218 00:12:25,000 --> 00:12:31,000 用于查找的股票代码或股票代码股票价格的基础上, 219 00:12:31,000 --> 00:12:34,000 你回来的日子目前的股票价格。 220 00:12:34,000 --> 00:12:37,000 其实你看到的数据将在这个特殊的pset 221 00:12:37,000 --> 00:12:40,000 因为现实世界,因为它可以使你实际上接口 222 00:12:40,000 --> 00:12:43,000 与现实世界的股票,真正的世界价格, 223 00:12:43,000 --> 00:12:47,000 我们将看到多少钱,你也许可以 224 00:12:47,000 --> 00:12:51,000 在接下来的几天里,玩了你自己的问题。 225 00:12:51,000 --> 00:12:55,000 >> 但首先让我们如何设计的东西,当然,更复杂的阶段 226 00:12:55,000 --> 00:12:59,000 比counter.php,这是迄今比任何的大一IMS例子更复杂, 227 00:12:59,000 --> 00:13:02,000 让我们在这里介绍几个范例,让我们 228 00:13:02,000 --> 00:13:06,000 为pset的,也许最终的项目,如果你做一些基于Web的 229 00:13:06,000 --> 00:13:11,000 让你的代码,良好的组织,以保持自己的理智, 230 00:13:11,000 --> 00:13:15,000 并采取一步步走向合作,无论在CS50的最后项目 231 00:13:15,000 --> 00:13:18,000 或超越,如果你继续在未来编程的东西。 232 00:13:18,000 --> 00:13:21,000 这个一般设计范式 233 00:13:21,000 --> 00:13:24,000 在计算机科学和软件开发 234 00:13:24,000 --> 00:13:27,000 被称为MVC模型视图控制器, 235 00:13:27,000 --> 00:13:30,000 这是一个愚蠢的缩写,描述了一个非常好的主意, 236 00:13:30,000 --> 00:13:34,000 这是一个程序的不同方面的分离, 237 00:13:34,000 --> 00:13:39,000 特别是保持独立的逻辑或业务逻辑的一个网站 238 00:13:39,000 --> 00:13:42,000 所以这样的话,任何涉及 239 00:13:42,000 --> 00:13:45,000 调用函数和查询数据库和 240 00:13:45,000 --> 00:13:48,000 发生了不属于你的HTML 241 00:13:48,000 --> 00:13:51,000 而是在单独的文件中,确实有这样的一个文件 242 00:13:51,000 --> 00:13:54,000 通常,你叫控制器 243 00:13:54,000 --> 00:13:56,000 这就是真正的大脑后面的操作中,我们将看到一个例子 244 00:13:56,000 --> 00:13:58,000 这只是一瞬间。 245 00:13:58,000 --> 00:14:01,000 >> 有一个代码编程模型,它 246 00:14:01,000 --> 00:14:05,000 谈论到您的数据库,雅虎财经和说话, 247 00:14:05,000 --> 00:14:08,000 然后有MVC中的V的意见, 248 00:14:08,000 --> 00:14:11,000 所有的相关的东西,美学,实际包含的文件 249 00:14:11,000 --> 00:14:14,000 您的HTML,也许你的CSS等。 250 00:14:14,000 --> 00:14:17,000 这里的想法,作为这张照片表明,是控制器 251 00:14:17,000 --> 00:14:21,000 是的文件,我们很快就会看到,你会特别的pset 7, 252 00:14:21,000 --> 00:14:24,000 世界谈判,以通过他们的网络浏览器。 253 00:14:24,000 --> 00:14:27,000 这是在公共互联网上的文件,该文件被访问的, 254 00:14:27,000 --> 00:14:30,000 但控制器的谈话可能是一个模型, 255 00:14:30,000 --> 00:14:34,000 这是包含的代码相关的数据的一个或多个其它文件, 256 00:14:34,000 --> 00:14:37,000 数据库和等相关代码,然后它说话 257 00:14:37,000 --> 00:14:40,000 控制器的一个或多个其它文件称为视图, 258 00:14:40,000 --> 00:14:43,000 这是一个网页的美观性,各种模板, 259 00:14:43,000 --> 00:14:47,000 可能需要一些数据作为输入,但在一天结束时 260 00:14:47,000 --> 00:14:50,000 唯一的内部逻辑的观点应该是渲染的数据, 261 00:14:50,000 --> 00:14:53,000 迭代循环,实际上吐出一些 262 00:14:53,000 --> 00:14:56,000 其基于HTML的翻译,甚至像一个PDF。 263 00:14:56,000 --> 00:14:59,000 >> 什么是不错的关于MVC的是,你可以有不同的看法 264 00:14:59,000 --> 00:15:02,000 的设备的类型的基础上,基于类型的文件格式,你实际上 265 00:15:02,000 --> 00:15:04,000 要显示给用户。 266 00:15:04,000 --> 00:15:10,000 让我们来看看一些越来越复杂和精心设计的例子 267 00:15:10,000 --> 00:15:13,000 第一个版本0在这里开始。 268 00:15:13,000 --> 00:15:16,000 让我去进取,不断开拓今天在我们的MVC目录 269 00:15:16,000 --> 00:15:21,000 一个名为index.php的文件目录0。 270 00:15:21,000 --> 00:15:26,000 请注意,这是一个超级简单的,很给人留下深刻印象的网站 271 00:15:26,000 --> 00:15:29,000 这是排序的网页版本0 CS50, 272 00:15:29,000 --> 00:15:32,000 看到我们如何有一个链接,在演讲中,我们有一个链接到课程, 273 00:15:32,000 --> 00:15:35,000 如果我按照的链接的URL讲座通知 274 00:15:35,000 --> 00:15:39,000 往上顶改变lectures.php。 275 00:15:39,000 --> 00:15:44,000 如果我然后按照链接到第1周通知的URL改变week1.php。 276 00:15:44,000 --> 00:15:46,000 似乎是一个非常简单的分层结构。 277 00:15:46,000 --> 00:15:49,000 >> 让我们快速浏览一下这是如何规定的引擎盖下, 278 00:15:49,000 --> 00:15:53,000 而事实上,如果我看的index.php这是很简单的。 279 00:15:53,000 --> 00:15:57,000 事实上,即使我称这是一个PHP文件,没有实际的编程代码。 280 00:15:57,000 --> 00:16:01,000 有一个评论,我在这里写PHP,使用户不会看到它。 281 00:16:01,000 --> 00:16:05,000 当然,像以前一样,在PHP标签之间的任何 282 00:16:05,000 --> 00:16:08,000 将会被解释为,即使这是一个注释,解释评论 283 00:16:08,000 --> 00:16:11,000 意味着只是在一天结束的时候把它扔掉,而不是真正 284 00:16:11,000 --> 00:16:15,000 发送到浏览器,所以在这里的一切只是美学。 285 00:16:15,000 --> 00:16:20,000 如果我打开同样lectures.php的,这也只是一个硬编码的文件。 286 00:16:20,000 --> 00:16:23,000 它发生在被称为PHP的, 287 00:16:23,000 --> 00:16:27,000 但它确实是公正的。html,并week1.php,week2.php的 288 00:16:27,000 --> 00:16:31,000 同样是标记,因此有一堆这种设计的缺点。 289 00:16:31,000 --> 00:16:33,000 一,这是一个巨大的复制/粘贴。 290 00:16:33,000 --> 00:16:37,000 即使在这些文件中唯一的变化是无序列表, 291 00:16:37,000 --> 00:16:41,000 li标签,我仍然有doc文件,HTML,头部, 292 00:16:41,000 --> 00:16:44,000 标题,靠近身体,密切的HTML和更多 293 00:16:44,000 --> 00:16:47,000 在每一个文件,这意味着如果我想调整 294 00:16:47,000 --> 00:16:50,000 这的网页或restylize它我必须去改变 295 00:16:50,000 --> 00:16:54,000 所有这些文件手动或使用一些大规模的查找和替换。 296 00:16:54,000 --> 00:17:01,000 >> 让我们一步步走向一个更聪明,不再想在这里第1版设计 297 00:17:01,000 --> 00:17:04,000 据此,作为每读我说,我们提供了这样您就可以一起玩 298 00:17:04,000 --> 00:17:07,000 这些悠闲地在家里通知,我们这里有 299 00:17:07,000 --> 00:17:10,000 本网站中的文件的摘要版本1, 300 00:17:10,000 --> 00:17:13,000 似乎我已经采取了根据自己的因素 301 00:17:13,000 --> 00:17:17,000 一些常见的代码,header.php和footer.php。 302 00:17:17,000 --> 00:17:20,000 那么,让我们来看看里面有什么第一。 303 00:17:20,000 --> 00:17:23,000 header.php文件看起来很熟悉, 304 00:17:23,000 --> 00:17:26,000 但要注意,切断? 305 00:17:26,000 --> 00:17:30,000 右后19行,所以这是共同的一切 306 00:17:30,000 --> 00:17:33,000 从文件的index.php,lectures.php, 307 00:17:33,000 --> 00:17:36,000 第一周和week2.php从前面的例子。 308 00:17:36,000 --> 00:17:40,000 我所做的就是复制和剪切一切所有这些文件是共同的, 309 00:17:40,000 --> 00:17:44,000 把它放在一个单独的头文件,同样在footer.php的 310 00:17:44,000 --> 00:17:48,000 我采用同样的原则,即唯一有趣的线 311 00:17:48,000 --> 00:17:52,000 在fo​​oter.php的是这两个,靠近身体和密切的HTML。 312 00:17:52,000 --> 00:17:55,000 >> 但是这意味着什么,现在是在新版本 313 00:17:55,000 --> 00:17:59,000 多么简单的index.php通知可以得到的。 314 00:17:59,000 --> 00:18:02,000 当然,多一点神秘的期待,少一些直观的 315 00:18:02,000 --> 00:18:06,000 按照从上到下,但我的上帝,所有的冗余已经不复存在了。 316 00:18:06,000 --> 00:18:10,000 我们需要使用字面上称为一个PHP函数需要往上顶, 317 00:18:10,000 --> 00:18:15,000 这很容易让人想起,回忆,C的#include机制。 318 00:18:15,000 --> 00:18:17,000 我们需要的header.php在顶部。 319 00:18:17,000 --> 00:18:20,000 我们需要footer.php的底部,唯一不同的 320 00:18:20,000 --> 00:18:25,000 有关此文件或特殊的意思是它独有的内容。 321 00:18:25,000 --> 00:18:29,000 然后,如果我去,说,lectures.php,同样的原则也适用。 322 00:18:29,000 --> 00:18:32,000 同样,一些意见往上顶,但我需要的头,要求页脚, 323 00:18:32,000 --> 00:18:35,000 在两者之间,它的唯一的内容,实际上改变了。 324 00:18:35,000 --> 00:18:38,000 如果我们看着周1周和2,我们会看到 325 00:18:38,000 --> 00:18:42,000 ,同样的原则已在此应用。 326 00:18:42,000 --> 00:18:44,000 嗯,我们不完全完成。 327 00:18:44,000 --> 00:18:48,000 >> 让我们来看看第2版,也有类似的结构, 328 00:18:48,000 --> 00:18:50,000 但要注意现在我已经介绍了别的东西。 329 00:18:50,000 --> 00:18:53,000 在第10行中,我介绍了helpers.php, 330 00:18:53,000 --> 00:18:55,000 这显然​​包含辅助功能。 331 00:18:55,000 --> 00:18:58,000 一个辅助函数通常是一个相对短的功能 332 00:18:58,000 --> 00:19:01,000 你写来帮助你在不同的地方, 333 00:19:01,000 --> 00:19:04,000 让我们来看看里面有什么,helpers.php。 334 00:19:04,000 --> 00:19:07,000 在这种情况下,它看起来像它有2个功能。 335 00:19:07,000 --> 00:19:10,000 还记得,有一天与我们的立方体的例子 336 00:19:10,000 --> 00:19:13,000 你可以定义你自己的函数在PHP中,和我现在所做的,是我已经 337 00:19:13,000 --> 00:19:17,000 定义功能称为渲染页脚,使头, 338 00:19:17,000 --> 00:19:21,000 其中第一个参数,称为数据, 339 00:19:21,000 --> 00:19:25,000 其默认值是一个空数组,建议有, 340 00:19:25,000 --> 00:19:29,000 ,我们其实可以写更简洁的最新版本的PHP 341 00:19:29,000 --> 00:19:32,000 说左方括号,方括号封闭。 342 00:19:32,000 --> 00:19:35,000 这意味着一个空数组的大小为0,但仍然阵列。 343 00:19:35,000 --> 00:19:38,000 >> 这种提取物的功能是有点特殊的, 344 00:19:38,000 --> 00:19:41,000 它是什么,它​​的参数是一个关联数组 345 00:19:41,000 --> 00:19:45,000 有0个或多个键值对,如果你有一个关键的foo 346 00:19:45,000 --> 00:19:48,000 酒吧提取物功能和值 347 00:19:48,000 --> 00:19:51,000 创建一个情况中,现在,作为第11行, 348 00:19:51,000 --> 00:19:57,000 你有一个局部变量$ foo的值是酒吧。 349 00:19:57,000 --> 00:19:59,000 如果你有更多的数据数组中的键和值, 350 00:19:59,000 --> 00:20:03,000 同样,他们会被解压缩到本地范围内的 351 00:20:03,000 --> 00:20:06,000 或名称空间,使footer.php文件和 352 00:20:06,000 --> 00:20:09,000 同样的想法在这里,这样的header.php 353 00:20:09,000 --> 00:20:12,000 对这些变量的访问。 354 00:20:12,000 --> 00:20:15,000 事实上,让我再次打开header.php文件 355 00:20:15,000 --> 00:20:18,000 并提请注意在这个版本是什么样子。 356 00:20:18,000 --> 00:20:22,000 >> 而不是硬编码CS50为每一个页面的标题 357 00:20:22,000 --> 00:20:24,000 注意到这是可能的,现在的活力。 358 00:20:24,000 --> 00:20:29,000 在第5行,我呼应了标题变量, 359 00:20:29,000 --> 00:20:34,000 但首先,我要传递,的标题变量来调用的函数进行htmlspecialchars。 360 00:20:34,000 --> 00:20:38,000 一个愚蠢的名字的函数,只要它是,但它确实它说什么。 361 00:20:38,000 --> 00:20:41,000 它可确保任何特殊字符 362 00:20:41,000 --> 00:20:46,000 在字符串中,已通过正确转义HTML。 363 00:20:46,000 --> 00:20:49,000 这其实是一种方式,避免一些所谓的跨站点脚本攻击 364 00:20:49,000 --> 00:20:52,000 据此,有人恶意或意外 365 00:20:52,000 --> 00:20:55,000 注入自己的HTML到您的网站 366 00:20:55,000 --> 00:20:59,000 通过粘贴到某种形式的,例如, 367 00:20:59,000 --> 00:21:02,000 什么,你是不是很期待,尤其是JavaScript代码, 368 00:21:02,000 --> 00:21:05,000 我们将讨论大约在一个星期或两个的时间。 369 00:21:05,000 --> 00:21:08,000 >> 现在这header.php文件,这是一个视图 370 00:21:08,000 --> 00:21:12,000 在这个意义上,它可以让你查​​看美观一些数据集的内容。 371 00:21:12,000 --> 00:21:14,000 但是,更具体地,它是一个模板。 372 00:21:14,000 --> 00:21:19,000 这是现在我们希望每一个页面的标题看起来像什么样的蓝图, 373 00:21:19,000 --> 00:21:23,000 但有一些活力,我们要动态地插入标题 374 00:21:23,000 --> 00:21:26,000 根据标题变量 375 00:21:26,000 --> 00:21:30,000 提取时,我们再次呼吁, 376 00:21:30,000 --> 00:21:33,000 渲染头功能。 377 00:21:33,000 --> 00:21:36,000 现在,如果我们看到在渲染页脚,实际上是没有多大用处的,正确的现在 378 00:21:36,000 --> 00:21:40,000 因为在footer.php文件有任何没有活力。 379 00:21:40,000 --> 00:21:43,000 有可能,但此刻的标签,这是一个硬编码的列表, 380 00:21:43,000 --> 00:21:46,000 但同样的想法适用的,因此实际上说明了为什么 381 00:21:46,000 --> 00:21:49,000 我们浪费时间了,有一个渲染的头和渲染页脚功能? 382 00:21:49,000 --> 00:21:52,000 让我去,而不是现在已进入第3版, 383 00:21:52,000 --> 00:21:56,000 3佣工版本,我决定简化甚至更多。 384 00:21:56,000 --> 00:21:58,000 >> 让我有一个渲染功能。 385 00:21:58,000 --> 00:22:02,000 让我有另一种说法,这段时间称为模板, 386 00:22:02,000 --> 00:22:05,000 是指为模板的名称, 387 00:22:05,000 --> 00:22:11,000 然后,我将连接振振有词。PHP该变量的值, 388 00:22:11,000 --> 00:22:17,000 然后如果它存在foo.php的,bar.php或header.php和footer.php, 389 00:22:17,000 --> 00:22:20,000 然后,我要继续前进,提取变量数据 390 00:22:20,000 --> 00:22:23,000 然后要求这条道路。 391 00:22:23,000 --> 00:22:29,000 换句话说,现在,如果我打开index.php文件 392 00:22:29,000 --> 00:22:32,000 请注意,我不调用render头了。 393 00:22:32,000 --> 00:22:36,000 我只需要调用渲染,但我通过在报头值的 394 00:22:36,000 --> 00:22:39,000 明确的模板,其实我是想加载。 395 00:22:39,000 --> 00:22:41,000 >> 然后在这里发现我在做什么。 396 00:22:41,000 --> 00:22:44,000 我是通过动态的一个关键的标题, 397 00:22:44,000 --> 00:22:47,000 CS50值,这一点,正如我们之前看到的, 398 00:22:47,000 --> 00:22:51,000 在最新版本的PHP,能够更简洁 399 00:22:51,000 --> 00:22:54,000 在这里我可以取代用方括号的数组函数, 400 00:22:54,000 --> 00:22:57,000 我的建议是更可读的,当然 401 00:22:57,000 --> 00:22:59,000 一个小更容易输入。 402 00:22:59,000 --> 00:23:02,000 当然,与渲染底部的页脚呼叫, 403 00:23:02,000 --> 00:23:05,000 我们不通过关联数组中的第二个参数,没有打扰, 404 00:23:05,000 --> 00:23:07,000 因为没有什么动态,页脚里面的。 405 00:23:07,000 --> 00:23:10,000 这只是一些关闭的标签为HTML。 406 00:23:10,000 --> 00:23:14,000 好,我们正在采取步骤实现真正清洁的东西在这里, 407 00:23:14,000 --> 00:23:17,000 但让我开了2最后的例子。 408 00:23:17,000 --> 00:23:21,000 这其中,4号,请注意,我现在做了一个明智的决定 409 00:23:21,000 --> 00:23:26,000 在前面的例子中,最后用一些我的文件层次结构,以改善。 410 00:23:26,000 --> 00:23:29,000 >> 请注意,在此总结,在此我读,我已经介绍 411 00:23:29,000 --> 00:23:32,000 包括目录和模板目录 412 00:23:32,000 --> 00:23:35,000 其内容将是我想要的东西,包括 413 00:23:35,000 --> 00:23:38,000 和模板,我想,分别呈现。 414 00:23:38,000 --> 00:23:42,000 这的确是我的肛门,并试图保持整洁, 415 00:23:42,000 --> 00:23:45,000 相关的文件,但最终的结果 416 00:23:45,000 --> 00:23:48,000 是,我们现在有一个稍微整齐的设置,但现在我们必须记住 417 00:23:48,000 --> 00:23:51,000 在,例如,的index.php 418 00:23:51,000 --> 00:23:55,000 当我们需要的文件helpers.php的时 419 00:23:55,000 --> 00:24:01,000 我们现在需要通过包括/ helpers.php 420 00:24:01,000 --> 00:24:06,000 而不是仅仅说helpers.php的,因为现在它实际上是在一个子目录。 421 00:24:06,000 --> 00:24:09,000 现在,顺便说一句,你会看到在这些例子和其他一些 422 00:24:09,000 --> 00:24:11,000 功能,如需要,一旦需要。 423 00:24:11,000 --> 00:24:15,000 实际上,有一个函数本身叫做包括,他们都具有略微不同的行为。 424 00:24:15,000 --> 00:24:18,000 在这里,我说需要一次超清晰,我只希望那些 425 00:24:18,000 --> 00:24:20,000 佣工,包括一次在我的项目。 426 00:24:20,000 --> 00:24:24,000 但是,如果我小心,如果我想通过我的逻辑正确 427 00:24:24,000 --> 00:24:27,000 它应该足够了,也只是说需要往上顶 428 00:24:27,000 --> 00:24:31,000 只要我自己不意外需要其他地方相同的文件。 429 00:24:31,000 --> 00:24:34,000 其实,这是一种更有效的方式做的事情,然后使用 430 00:24:34,000 --> 00:24:38,000 再次要求,所以我将只需要修剪下来。 431 00:24:38,000 --> 00:24:40,000 >> 让我们又进了一步。 432 00:24:40,000 --> 00:24:46,000 第5版,现在这最后一个例子,有一个更清洁的文件夹层次结构。 433 00:24:46,000 --> 00:24:50,000 请注意我在这里所做的每读我在这最后的版本 434 00:24:50,000 --> 00:24:54,000 现在,我有我的HTML目录,我已经有这么长的时间, 435 00:24:54,000 --> 00:24:58,000 但里面的有现在是的index.php,lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php和week2.php。 437 00:25:01,000 --> 00:25:05,000 包括目录现在住在旁边的HTML目录, 438 00:25:05,000 --> 00:25:08,000 在同级别的兄弟姐妹,可以这么说。 439 00:25:08,000 --> 00:25:10,000 那么,模板文件夹。 440 00:25:10,000 --> 00:25:14,000 这里的关键特点是,我已经介绍了一点点的结构, 441 00:25:14,000 --> 00:25:17,000 但现在的主要特征是,只有文件 442 00:25:17,000 --> 00:25:21,000 需要通过网络访问,公开寻址 443 00:25:21,000 --> 00:25:25,000 在公共互联网上的URL是在我的HTML目录。 444 00:25:25,000 --> 00:25:28,000 >> 与此同时,其他的文件,helpers.php,footer.php的, 445 00:25:28,000 --> 00:25:32,000 header.php文件,也许可以说是更敏感, 446 00:25:32,000 --> 00:25:35,000 也许佣工实际上有一些用户名和密码或部分知识产权 447 00:25:35,000 --> 00:25:39,000 我的财产,我真的不希望让全世界都看到,即使不小心的功能。 448 00:25:39,000 --> 00:25:45,000 这是很好的做法,保持了公众的HTML目录 449 00:25:45,000 --> 00:25:48,000 不需要任何文件本身是公开的。 450 00:25:48,000 --> 00:25:51,000 所有您需要做时,在这种情况下,例如, 451 00:25:51,000 --> 00:25:55,000 HTML目录的index.php文件, 452 00:25:55,000 --> 00:25:58,000 注意到当需要时,我们只是要更加小心一点 453 00:25:58,000 --> 00:26:00,000 再次要求该文件。 454 00:26:00,000 --> 00:26:03,000 我首先需要做的..去的父目录, 455 00:26:03,000 --> 00:26:06,000 然后你/ / helpers.php 456 00:26:06,000 --> 00:26:12,000 潜回得到的文件,我关心。 457 00:26:12,000 --> 00:26:16,000 >> 然后在MVC的任何问题 458 00:26:16,000 --> 00:26:20,000 这个相对简单的化身吗? 459 00:26:20,000 --> 00:26:23,000 让我明确表示,我们集中相当多的 460 00:26:23,000 --> 00:26:27,000 V这里的意见,并分解出这些模板。 461 00:26:27,000 --> 00:26:30,000 我们还没有真正区分M的Ç只是还没有。 462 00:26:30,000 --> 00:26:33,000 事实上,真的有没有M在这里,和我们的C, 463 00:26:33,000 --> 00:26:36,000 控制器,是不是真的做所有的东西,但你会得到更 464 00:26:36,000 --> 00:26:39,000 熟悉从MVC这2个字母, 465 00:26:39,000 --> 00:26:43,000 或者说,你会得到更加熟悉的C 466 00:26:43,000 --> 00:26:49,000 在MVC的问题集,所以有更多的地平线上。 467 00:26:49,000 --> 00:26:51,000 有问题吗? 468 00:26:51,000 --> 00:26:53,000 实际上,有没有人在这里。 469 00:26:53,000 --> 00:26:57,000 >> 好吧,让我们现在进入今天的第二个也是最后一个主题。 470 00:26:57,000 --> 00:27:00,000 这是引进的数据库。 471 00:27:00,000 --> 00:27:03,000 直到此时,我们已经有一些数据存储方式。 472 00:27:03,000 --> 00:27:05,000 我们使用的变量。 473 00:27:05,000 --> 00:27:08,000 回到我们的C文件,I / O的讨论,我们开始使用文本文件 474 00:27:08,000 --> 00:27:11,000 和使用的文件,如fprintf,然后我们甚至还没有开始 475 00:27:11,000 --> 00:27:14,000 一点点谈论CSV文件,逗号分隔值, 476 00:27:14,000 --> 00:27:17,000 因此,所有这些让我们有数据存储 477 00:27:17,000 --> 00:27:19,000 要么不持续或持久。 478 00:27:19,000 --> 00:27:23,000 但是,即使CSV文件是不是真的有利于搜索 479 00:27:23,000 --> 00:27:25,000 并插入和删除。 480 00:27:25,000 --> 00:27:28,000 这真的只是一个愚蠢的用逗号分隔的文本文件 481 00:27:28,000 --> 00:27:30,000 一行一行一行一行地,所以如果你想 482 00:27:30,000 --> 00:27:32,000 搜索该文件真的是最好的,你可以做线性搜索。 483 00:27:32,000 --> 00:27:34,000 你必须开始在该文件的顶部,读了整个事情中, 484 00:27:34,000 --> 00:27:36,000 寻找一些价值的利益。 485 00:27:36,000 --> 00:27:39,000 如果你想插入到它,你必须做同样的事情, 486 00:27:39,000 --> 00:27:41,000 遍历它,并插入一个特别的地方, 487 00:27:41,000 --> 00:27:45,000 而事实上,你需要做的所有的搜索逻辑自己。 488 00:27:45,000 --> 00:27:49,000 >> 你不能这样做聪明的模式匹配一​​个CSV文件,除非你自己写的代码。 489 00:27:49,000 --> 00:27:51,000 你不能做一个CSV文件的过滤 490 00:27:51,000 --> 00:27:53,000 除非你自己写的代码。 491 00:27:53,000 --> 00:27:56,000 那岂不是很好,如果有人把所有的努力都 492 00:27:56,000 --> 00:27:59,000 真正让搜索方便,插入容易 493 00:27:59,000 --> 00:28:01,000 删除和更新等等? 494 00:28:01,000 --> 00:28:04,000 那到底什么是数据库。 495 00:28:04,000 --> 00:28:07,000 SQL结构化查询语言,又是另一种语言 496 00:28:07,000 --> 00:28:10,000 我们引入今天在这里,但也相当接近, 497 00:28:10,000 --> 00:28:13,000 我们真正要做的只是摘下了它的一些最显着的 498 00:28:13,000 --> 00:28:16,000 特性,使的pset 7,如果你做一些基于Web的, 499 00:28:16,000 --> 00:28:19,000 您的最后一个项目,你有自己的表达能力 500 00:28:19,000 --> 00:28:22,000 在数据查询。 501 00:28:22,000 --> 00:28:25,000 有本事你存储大量的数据 502 00:28:25,000 --> 00:28:28,000 在一个更结构化的方式,将在一天结束时 503 00:28:28,000 --> 00:28:32,000 让您的生活更容易,因为与SQL中,你可以表达自己 504 00:28:32,000 --> 00:28:35,000 更精确,更有条不紊,以 505 00:28:35,000 --> 00:28:40,000 从更多的语料数据,一些数据子集。 506 00:28:40,000 --> 00:28:45,000 >> 你能想到的数据库,在这种情况下,SQL数据库,真的很喜欢Excel中 507 00:28:45,000 --> 00:28:48,000 或数字,它是一个电子表格, 508 00:28:48,000 --> 00:28:50,000 或可能多个电子表格,电子表格,当然, 509 00:28:50,000 --> 00:28:53,000 有行和列,这是因为 510 00:28:53,000 --> 00:28:56,000 在这个意义上,SQL数据库是关系,关系 511 00:28:56,000 --> 00:28:59,000 它们存储在这些表中的数据, 512 00:28:59,000 --> 00:29:01,000 行和列。 513 00:29:01,000 --> 00:29:03,000 他们是性能更高的类似电子表格, 514 00:29:03,000 --> 00:29:05,000 和一个电子表格是指由一个人使用。 515 00:29:05,000 --> 00:29:08,000 是指由程序员使用一个数据库 516 00:29:08,000 --> 00:29:12,000 对编写代码,这样一个数据库的化身 517 00:29:12,000 --> 00:29:14,000 是命令行。 518 00:29:14,000 --> 00:29:18,000 >> 其中最流行的关系数据库在那里,再次,MySQL和 519 00:29:18,000 --> 00:29:22,000 奇妙的是免费的,非常高的性能,这是什么 520 00:29:22,000 --> 00:29:24,000 Facebook的使用很早就在一定程度上仍然是当今 521 00:29:24,000 --> 00:29:27,000 存储大量的数据,我们可以看到在某一时刻 522 00:29:27,000 --> 00:29:30,000 ,使用相对简单的命令 523 00:29:30,000 --> 00:29:33,000 我们可以选择数据,插入数据,更新数据, 524 00:29:33,000 --> 00:29:37,000 删除数据之类的,但幸运的是,有一个更友好的用户界面 525 00:29:37,000 --> 00:29:39,000 比打字黑色和白色的提示。 526 00:29:39,000 --> 00:29:43,000 我们将使用的pset 7和一个免费工具phpMyAdmin的。 527 00:29:43,000 --> 00:29:45,000 这个名字是偶然的。 528 00:29:45,000 --> 00:29:47,000 该工具恰好是在PHP中实现, 529 00:29:47,000 --> 00:29:49,000 但是,这是根本不相干的。 530 00:29:49,000 --> 00:29:53,000 什么是非常有用的关于phpMyAdmin的是,它是一个基于Web的工具。 531 00:29:53,000 --> 00:29:55,000 我们已经预先安装它为您在家电, 532 00:29:55,000 --> 00:29:58,000 有了它,你可以创建数据库中的表, 533 00:29:58,000 --> 00:30:01,000 你可以插入数据,删除数据,并通常会看到 534 00:30:01,000 --> 00:30:04,000 你的数据在一个相当友好的用户环境。 535 00:30:04,000 --> 00:30:07,000 你的用户不会使用phpMyAdmin。 536 00:30:07,000 --> 00:30:09,000 >> 这是真的只是一个的行政或开发人员的工具 537 00:30:09,000 --> 00:30:12,000 看,捅在你的数据,并找出如何构建它, 538 00:30:12,000 --> 00:30:15,000 就像你自己可能会使用Excel或数字, 539 00:30:15,000 --> 00:30:19,000 但它的将是一个伟大的方式可视化的引擎盖下这是怎么回事 540 00:30:19,000 --> 00:30:22,000 使您可以专注于一个有趣的问题解决,而不是这么多 541 00:30:22,000 --> 00:30:25,000 在神秘的命令。 542 00:30:25,000 --> 00:30:28,000 让我们来看看一个例子的数据可能存储扁平 543 00:30:28,000 --> 00:30:30,000 在关系数据库中。 544 00:30:30,000 --> 00:30:32,000 下面是一个例子。 545 00:30:32,000 --> 00:30:35,000 现在,不幸的是,phpMyAdmin的错误侧抛的方式太多的话 546 00:30:35,000 --> 00:30:38,000 在你的图形,但如果你只是在磨练 547 00:30:38,000 --> 00:30:42,000 ID列,“用户名”列,和哈希列, 548 00:30:42,000 --> 00:30:45,000 这实际上是一个电子表格,但它正好是一个片段 549 00:30:45,000 --> 00:30:49,000 器具的表里面 550 00:30:49,000 --> 00:30:53,000 使用的文件,我们为您提供问题集7。 551 00:30:53,000 --> 00:30:57,000 >> 特别是,我们给你一个文件,该文件表示 552 00:30:57,000 --> 00:31:01,000 用户的表,所以具有3列的电子表格包含用户, 553 00:31:01,000 --> 00:31:05,000 其中之一是从1开始的递增之后的一个唯一的ID。 554 00:31:05,000 --> 00:31:08,000 第二列是用户名,和那些你们谁做黑客, 555 00:31:08,000 --> 00:31:12,000 黑客版的pset 2,可能认识一些至少这些用户名。 556 00:31:12,000 --> 00:31:16,000 在右手边的密码,但他们不是字面的密码。 557 00:31:16,000 --> 00:31:19,000 他们哈希上,所以它原来 558 00:31:19,000 --> 00:31:22,000 存储在数据库中的密码是一个非常糟糕的主意。 559 00:31:22,000 --> 00:31:25,000 你都可能在某些时候的一些网站阅读 560 00:31:25,000 --> 00:31:28,000 或受到损害,一些公司的数据库,那么你必须 561 00:31:28,000 --> 00:31:31,000 更改你的密码,你需要的东西拿到退款 562 00:31:31,000 --> 00:31:34,000 因为一些坏家伙居然闯进您的帐户的结果。 563 00:31:34,000 --> 00:31:38,000 >> 在数据库中以明文形式存储密码,加密的 564 00:31:38,000 --> 00:31:41,000 完全是愚蠢的,但它大大有趣 565 00:31:41,000 --> 00:31:44,000 然后读一些非常有名的公司 566 00:31:44,000 --> 00:31:47,000 有时在记者的数据库被攻破, 567 00:31:47,000 --> 00:31:50,000 这部分是不好笑,但加密数据库包含的事实, 568 00:31:50,000 --> 00:31:53,000 密码是荒谬的,因为从字面上一行代码 569 00:31:53,000 --> 00:31:57,000 你可以防止特定的威胁,这就是我们在这里所做的。 570 00:31:57,000 --> 00:32:00,000 即使是假的小CS50财经版 571 00:32:00,000 --> 00:32:03,000 密码进行加密的好措施,而事实上, 572 00:32:03,000 --> 00:32:07,000 所有这些密码启动$ 1 $仅仅是一个惯例。 573 00:32:07,000 --> 00:32:10,000 这只是意味着,他们是加密的,还是真的进行散列, 574 00:32:10,000 --> 00:32:13,000 这是一个单向加密功能 575 00:32:13,000 --> 00:32:17,000 让你无法扭转其与一种叫做MD5的影响。 576 00:32:17,000 --> 00:32:21,000 >> 一个事实,即图50是后表示的盐值 577 00:32:21,000 --> 00:32:24,000 50除了所有这些密码哈希。 578 00:32:24,000 --> 00:32:27,000 矿,当然,你可以在这里看到,HA, 579 00:32:27,000 --> 00:32:30,000 使用不同的盐,所以你得到了稍微绊倒了 580 00:32:30,000 --> 00:32:33,000 也许在黑客2,有可能的结果,我们利用 581 00:32:33,000 --> 00:32:36,000 比别人​​因为我的密码是不同的散列实际上是相同的 582 00:32:36,000 --> 00:32:38,000 作为其他一些用户那里。 583 00:32:38,000 --> 00:32:41,000 事实上,如果你一直在等待这几个星期来找出 584 00:32:41,000 --> 00:32:44,000 这些密码,这里的密码,你的挑战 585 00:32:44,000 --> 00:32:48,000 在黑客破解版的问题集,所以没有太棘手。 586 00:32:48,000 --> 00:32:50,000 事实上,默兰的相同jharvard, 587 00:32:50,000 --> 00:32:54,000 但如果我们回去,他们显得与众不同。 588 00:32:54,000 --> 00:32:58,000 >> 专注于jharvard深红色,因为他们腌制不同。 589 00:32:58,000 --> 00:33:01,000 该算法是一种方式,扰动 590 00:33:01,000 --> 00:33:05,000 哈希值,看起来有点不同的加密值 591 00:33:05,000 --> 00:33:08,000 因为输入略有不同,但引擎盖下的密码 592 00:33:08,000 --> 00:33:10,000 最终还是绯红。 593 00:33:10,000 --> 00:33:12,000 现在,谁关心这个? 594 00:33:12,000 --> 00:33:15,000 好了,我们为您提供的样本用户,用户名样本 595 00:33:15,000 --> 00:33:18,000 和他们的密码的哈希,所以你确实有一些 596 00:33:18,000 --> 00:33:23,000 客户CS50金融时您首先下车地面您的代码。 597 00:33:23,000 --> 00:33:27,000 你必须要实现更多的表在MySQL内部,里面的数据库。 598 00:33:27,000 --> 00:33:30,000 你必须创造出更多的电子表格,有效的,但我们决定给你这个 599 00:33:30,000 --> 00:33:33,000 让你开始,你会看到这个问题集规范 600 00:33:33,000 --> 00:33:37,000 引导您通过导入此表的过程中, 601 00:33:37,000 --> 00:33:39,000 也解释的一些特征是什么, 602 00:33:39,000 --> 00:33:41,000 你还可以看到,我们为您提供的代码 603 00:33:41,000 --> 00:33:44,000 处理这些密​​码的哈希或加密, 604 00:33:44,000 --> 00:33:49,000 所以你不必过于担心什么MD5或类似的实际上是所有关于。 605 00:33:49,000 --> 00:33:53,000 >> 因此,SQL结构化查询语言。 606 00:33:53,000 --> 00:33:56,000 这是很简单的语言,我们即将开始使用的pset 7 607 00:33:56,000 --> 00:34:01,000 也许以后要求一些数据库中的数据。 608 00:34:01,000 --> 00:34:06,000 再次,数据,存储扁平这些关系的表,列和行, 609 00:34:06,000 --> 00:34:09,000 但使用delete等一些相对简单的语法, 610 00:34:09,000 --> 00:34:12,000 插入,更新和选择,我们可以这样做。 611 00:34:12,000 --> 00:34:15,000 我们可以从数据库中删除,插入, 612 00:34:15,000 --> 00:34:19,000 更新数据,以及选择,那就是从数据库中检索数据。 613 00:34:19,000 --> 00:34:21,000 我们如何去这样做呢? 614 00:34:21,000 --> 00:34:23,000 让我提前进入设备。 615 00:34:23,000 --> 00:34:28,000 让我拉起来http://localhost的, 616 00:34:28,000 --> 00:34:30,000 这,又是当地的家电本身。 617 00:34:30,000 --> 00:34:32,000 这是它的默认昵称。 618 00:34:32,000 --> 00:34:35,000 让我去/ phpMyAdmin的。 619 00:34:35,000 --> 00:34:39,000 这恰好是一个特殊的URL,该设备是预先设定的了解 620 00:34:39,000 --> 00:34:42,000 立即提示我输入用户名和密码。 621 00:34:42,000 --> 00:34:46,000 >> 像往常一样,我会,输入jharvard和深红色的, 622 00:34:46,000 --> 00:34:48,000 但认识到,在计算机上的管理员帐户。 623 00:34:48,000 --> 00:34:53,000 这只是一个巧合,也有一个jharvard为CS50财务注册的。 624 00:34:53,000 --> 00:34:56,000 Jharvard,深红色,请输入给我的,我们看到的用户界面, 625 00:34:56,000 --> 00:34:59,000 一瞥的时刻,这是一个有点势不可挡的第一, 626 00:34:59,000 --> 00:35:02,000 不过请放心,你永远不会有点击的链接在此工具中。 627 00:35:02,000 --> 00:35:05,000 你会使用一小部分是超级有帮助, 628 00:35:05,000 --> 00:35:08,000 第一个是数据库。 629 00:35:08,000 --> 00:35:11,000 如果我去到数据库,请注意,系统提示我创建一个数据库。 630 00:35:11,000 --> 00:35:14,000 这是创建一个新的Excel文件,有效。 631 00:35:14,000 --> 00:35:18,000 我要继续前进,并调用这个演讲,我只是忽略该字段有,整理。 632 00:35:18,000 --> 00:35:20,000 它具有数据的代表性,其中, 633 00:35:20,000 --> 00:35:24,000 我点击“创建”,现在通知我放手的创建 634 00:35:24,000 --> 00:35:27,000 左手侧上说,没有数据库 635 00:35:27,000 --> 00:35:30,000 我应尽快请参阅的演讲资料库。 636 00:35:30,000 --> 00:35:32,000 >> 如果我现在点击左侧,演讲数据库, 637 00:35:32,000 --> 00:35:34,000 请注意我的标签改变一点点。 638 00:35:34,000 --> 00:35:38,000 我有结构,SQL,出口,进口和其他一些东西。 639 00:35:38,000 --> 00:35:40,000 结构几乎是空白。 640 00:35:40,000 --> 00:35:43,000 没有表在数据库中找到,这里说的, 641 00:35:43,000 --> 00:35:47,000 让我们创建一个表,让我们继续前进,并创建一个表 642 00:35:47,000 --> 00:35:53,000 喜欢的学生,我们要多少列? 643 00:35:53,000 --> 00:35:55,000 让我们保持这种简单,让我们为每一个学生的记录 644 00:35:55,000 --> 00:35:58,000 一个ID号码,姓名和电子邮件地址。 645 00:35:58,000 --> 00:36:02,000 >> 我们将继续这样的简单,所以3列,走了。 646 00:36:02,000 --> 00:36:05,000 您在这里看到的是现在的形式有点凌乱,而且势不可挡, 647 00:36:05,000 --> 00:36:08,000 但是我们必须去通过它行的行,所以真的很快,让我们给 648 00:36:08,000 --> 00:36:14,000 这个数据库中的第一列的名称的唯一标识符ID。 649 00:36:14,000 --> 00:36:17,000 这将是一个整数。其实我可以忽略的长度和值。 650 00:36:17,000 --> 00:36:21,000 将是一个int是32位,不管你输入在那里,让我们留空白。 651 00:36:21,000 --> 00:36:24,000 默认值,我可以让它空的定义。 652 00:36:24,000 --> 00:36:27,000 我要离开,仅此一点。让我们不要担心默认值。 653 00:36:27,000 --> 00:36:29,000 让我们滚动的权利,属性。 654 00:36:29,000 --> 00:36:31,000 这是有趣的。 655 00:36:31,000 --> 00:36:33,000 让我们继续前进,有些武断地说,ID必须是无符号的。 656 00:36:33,000 --> 00:36:35,000 让我们不要浪费任何负数。 657 00:36:35,000 --> 00:36:37,000 >> 让我们0至4亿美元,给予或采取, 658 00:36:37,000 --> 00:36:40,000 然后让我们不要只是还没有触及这些领域的那边, 659 00:36:40,000 --> 00:36:43,000 然后让我输入名称,在这里, 660 00:36:43,000 --> 00:36:46,000 然后其他的电子邮件,所以美中不足的是电子邮件 661 00:36:46,000 --> 00:36:50,000 和名称,显然不是整数,所以让我们改变这些不同的领域。 662 00:36:50,000 --> 00:36:53,000 事实证明,可变长度的字符数据类型为varchar 663 00:36:53,000 --> 00:36:56,000 就像是一个SQL数据库中的字符串 664 00:36:56,000 --> 00:36:59,000 但可变长度的,你必须告诉它提前 665 00:36:59,000 --> 00:37:02,000 最大长度的字符串,所以我会有点随意 666 00:37:02,000 --> 00:37:05,000 按照惯例,类型255个字符。 667 00:37:05,000 --> 00:37:08,000 我完全可以说32。我可以说1000。 668 00:37:08,000 --> 00:37:11,000 你有种根据自己的需要决定您的人口统计数据是什么 669 00:37:11,000 --> 00:37:14,000 最长的学生的名字,这个数字还是有点大, 670 00:37:14,000 --> 00:37:17,000 但一个varchar的好处是,它不会浪费 671 00:37:17,000 --> 00:37:19,000 255个字节的每一个学生的名字。 672 00:37:19,000 --> 00:37:23,000 如果它是国宝,它不会使用整个255字节, 673 00:37:23,000 --> 00:37:26,000 但这是一个上限,所以只是按照惯例,我会去255, 674 00:37:26,000 --> 00:37:30,000 但我们可以辩论,是一些较低的值,和电子邮件地址 675 00:37:30,000 --> 00:37:34,000 是一致的255,但同样,我们可以有同样的辩论。 676 00:37:34,000 --> 00:37:36,000 但我在这里要做的另一件事情上的右手边。 677 00:37:36,000 --> 00:37:40,000 >> 一个数据库的强大的是,它可以做很多繁重 678 00:37:40,000 --> 00:37:42,000 或复杂的工作。 679 00:37:42,000 --> 00:37:46,000 ,我真的不关心我的学生的ID号码是什么。 680 00:37:46,000 --> 00:37:49,000 在数据库中,它只是一个唯一的标识符 681 00:37:49,000 --> 00:37:52,000 所以我有一个32位的简洁表示,学生 682 00:37:52,000 --> 00:37:55,000 所以,我有一些方法的唯一标识 683 00:37:55,000 --> 00:37:58,000 以免有2戴维斯,比如,在一个类。 684 00:37:58,000 --> 00:38:01,000 事实上,我要检查这的AI箱,自动递增, 685 00:38:01,000 --> 00:38:04,000 这样的数据库,MySQL,计算出 686 00:38:04,000 --> 00:38:08,000 每个新插入的学生的ID将是。 687 00:38:08,000 --> 00:38:11,000 我什至不关心,在我的代码, 688 00:38:11,000 --> 00:38:13,000 我也要去选择的索引菜单下的东西。 689 00:38:13,000 --> 00:38:17,000 该指数降下来,这里主要的,独特的, 690 00:38:17,000 --> 00:38:19,000 索引和全文。 691 00:38:19,000 --> 00:38:21,000 你也许可以猜测这些东西是一对夫妇, 692 00:38:21,000 --> 00:38:24,000 但事实证明,在关系数据库中 693 00:38:24,000 --> 00:38:28,000 你的程序员或数据库管理员抢先 694 00:38:28,000 --> 00:38:32,000 提示到数据库中,哪些领域 695 00:38:32,000 --> 00:38:34,000 在一个表中,有一点特别。 696 00:38:34,000 --> 00:38:37,000 >> 例如,在这种情况下,我会说,ID 697 00:38:37,000 --> 00:38:42,000 将是一个主索引,否则被称为主键。 698 00:38:42,000 --> 00:38:44,000 这意味着什么的定义是ID今后 699 00:38:44,000 --> 00:38:48,000 唯一标识此表中的学生。 700 00:38:48,000 --> 00:38:53,000 没有一个学生都会有相同的ID,因为我实施这项限制或该指数​​。 701 00:38:53,000 --> 00:38:55,000 此外,这会为我做的是,它会告诉 702 00:38:55,000 --> 00:38:58,000 MySQL的ID是特殊的。 703 00:38:58,000 --> 00:39:03,000 我关心的,特别是关于ID,所以继续做你的幻想数据结构的魔法, 704 00:39:03,000 --> 00:39:05,000 建立某种树。 705 00:39:05,000 --> 00:39:08,000 通常情况下,它的一些所谓的B-树,这是我们没有看周前, 706 00:39:08,000 --> 00:39:11,000 但它的另一个类似的精神这样的数据结构的二叉树 707 00:39:11,000 --> 00:39:15,000 和尝试,我们看了看,但它会说 708 00:39:15,000 --> 00:39:18,000 数据库领域是非常重要的,我可能 709 00:39:18,000 --> 00:39:22,000 要是能够搜索就可以了,继续前进,建立一些花哨的 710 00:39:22,000 --> 00:39:25,000 在内存中的数据结构,因此,在理想状态下,以加快搜索 711 00:39:25,000 --> 00:39:28,000 他们是恒定的时间,或者至少是接近,尽可能 712 00:39:28,000 --> 00:39:32,000 因此,它不退化为线性搜索,这不会是 713 00:39:32,000 --> 00:39:34,000 最高端的执行方法。 714 00:39:34,000 --> 00:39:37,000 与此相反,电子邮件地址可能是一个主键。 715 00:39:37,000 --> 00:39:41,000 >> 从理论上讲,每个人的电子邮件地址是唯一的,除非你分享一些帐户, 716 00:39:41,000 --> 00:39:45,000 但它通常不是很好用的东西像一串串 717 00:39:45,000 --> 00:39:49,000 作为主键,因为在生活中,如果它的目的是为了唯一标识 718 00:39:49,000 --> 00:39:55,000 表中的数据没有任何理由最大限度地使用255字节 719 00:39:55,000 --> 00:39:58,000 唯一标识一个人,如果你能摆脱只用4个字节 720 00:39:58,000 --> 00:40:00,000 或一个32位的整数。 721 00:40:00,000 --> 00:40:03,000 在一般情况下,主键应该是短而简洁 722 00:40:03,000 --> 00:40:07,000 理想的东西,如一个整数或一个大的整数,这恰好是64位。 723 00:40:07,000 --> 00:40:11,000 但是一个电子邮件地址应该是唯一的,和一个数据库的功能之一的太 724 00:40:11,000 --> 00:40:14,000 对我来说是强制执行唯一性。 725 00:40:14,000 --> 00:40:18,000 通过选择独特的电子邮件,即使电子邮件本身 726 00:40:18,000 --> 00:40:21,000 滚动在屏幕上,我说的数据库 727 00:40:21,000 --> 00:40:23,000 不相信我。 728 00:40:23,000 --> 00:40:26,000 不要让我插入到数据库中 729 00:40:26,000 --> 00:40:29,000 两次相同的电子邮件地址,即使我是个白痴,我不 730 00:40:29,000 --> 00:40:32,000 非常好,我如果和别人的IFS和实际的PHP代码 731 00:40:32,000 --> 00:40:37,000 我不小心让用户与现有的电子邮件地址注册 732 00:40:37,000 --> 00:40:40,000 数据库是另一层次的防御的正确性 733 00:40:40,000 --> 00:40:44,000 重复的电子邮件地址,以确保在表中并没有结束。 734 00:40:44,000 --> 00:40:49,000 >> 现在,相比之下,名称,你可能不希望使这一独特的 735 00:40:49,000 --> 00:40:51,000 因为这时就永远也不会2戴维斯或2麦克史密斯,例如, 736 00:40:51,000 --> 00:40:55,000 在你的数据库中,这样一个我们就独自离开。 737 00:40:55,000 --> 00:40:58,000 我要继续前进,并在右下角单击“保存”, 738 00:40:58,000 --> 00:41:02,000 一切都看起来不错,但注意到在这里 739 00:41:02,000 --> 00:41:04,000 这是一个部分,现在我们不会花太多时间 740 00:41:04,000 --> 00:41:07,000 因为语法是有点复杂,我们不必创建表 741 00:41:07,000 --> 00:41:10,000 这一切的时候,但SQL本身是一种语言, 742 00:41:10,000 --> 00:41:13,000 的语法是正确的,在这里,我已经强调了。 743 00:41:13,000 --> 00:41:18,000 phpMyAdmin的确实是它为你创建一个基于Web的GUI 744 00:41:18,000 --> 00:41:23,000 您可以节省时间,不必手动输入 745 00:41:23,000 --> 00:41:26,000 这样的一个相当长的SQL查询。 746 00:41:26,000 --> 00:41:29,000 >> 换句话说,如果你想手动创建该表, 747 00:41:29,000 --> 00:41:32,000 无论是在那个黑白色的提示,甚至在phpMyAdmin的 748 00:41:32,000 --> 00:41:35,000 SQL选项卡使用此选项卡,在那里你可以输入任何SQL查询 749 00:41:35,000 --> 00:41:38,000 坦率地说,你想,这一切都我一分钟 750 00:41:38,000 --> 00:41:41,000 记得整个语法,即使到那时,我可能会 751 00:41:41,000 --> 00:41:45,000 取得了一些拼写错误,所以这个工具是有用的,这样的事情,这也是启发。 752 00:41:45,000 --> 00:41:49,000 您就可以开始推断的语法是什么 753 00:41:49,000 --> 00:41:52,000 只是漂亮的颜色编码,phpMyAdmin的加入 754 00:41:52,000 --> 00:41:54,000 我们的直观方便。 755 00:41:54,000 --> 00:41:56,000 但现在让我们做到这一点,而不是。 756 00:41:56,000 --> 00:42:00,000 让我去顶部插入“选项卡,并让我继续前进,例如插入 757 00:42:00,000 --> 00:42:04,000 让我们的ID说,其实我不在乎。 758 00:42:04,000 --> 00:42:07,000 这将自动增加。我打算让数据库处理。 759 00:42:07,000 --> 00:42:11,000 但我是大卫,和我的电子邮件应该是malan@harvard.edu的。 760 00:42:11,000 --> 00:42:16,000 >> 让我们继续在这里和麦克·史密斯为另一个。 761 00:42:16,000 --> 00:42:18,000 我给自己的姓氏, 762 00:42:18,000 --> 00:42:22,000 我们将已他是smith@example.com,, 763 00:42:22,000 --> 00:42:24,000 然后我在哪里呢? 764 00:42:24,000 --> 00:42:27,000 嗯,它看起来像走的是按钮,按一下,瞧。 765 00:42:27,000 --> 00:42:30,000 请注意,在插入2行。 766 00:42:30,000 --> 00:42:32,000 这是实际的SQL查询。 767 00:42:32,000 --> 00:42:36,000 这是对我的phpMyAdmin工具执行, 768 00:42:36,000 --> 00:42:40,000 但最终的结果,通知,如果我现在去浏览“选项卡, 769 00:42:40,000 --> 00:42:43,000 看到2本表中的行,很容易让人想起美观 770 00:42:43,000 --> 00:42:46,000 表中我们在前面看到的pset 7,为我们的用户 771 00:42:46,000 --> 00:42:51,000 其中一人是大卫·马兰,其中一人是麦克·史密斯。 772 00:42:51,000 --> 00:42:54,000 但仅仅是明确的,我并不需要使用phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 而事实上,你会很快写代码的pset 7 774 00:42:56,000 --> 00:43:01,000 它可以自动添加行,删除行,行和更新的过程中, 775 00:43:01,000 --> 00:43:04,000 所以让我,而不是去“SQL”选项卡,在这里 776 00:43:04,000 --> 00:43:14,000 和类型中选择*从学生那里 777 00:43:14,000 --> 00:43:18,000 电子邮件=的“malan@harvard.edu。” 778 00:43:18,000 --> 00:43:21,000 >> 换句话说,假设你现在有 779 00:43:21,000 --> 00:43:26,000 一些HTML的形式,在他们的电子邮件地址和用户类型,在其他领域, 780 00:43:26,000 --> 00:43:29,000 现在的目标是在PHP的后端代码 781 00:43:29,000 --> 00:43:31,000 查找该用户的其他细节。 782 00:43:31,000 --> 00:43:34,000 您的全名是什么?您的身份证号码是什么? 783 00:43:34,000 --> 00:43:37,000 你可以写一个这样的SQL查询,SELECT * FROM学生 784 00:43:37,000 --> 00:43:40,000 在这里,电子邮件=的“malan@harvard.edu。” 785 00:43:40,000 --> 00:43:46,000 而且,如果我再单击“Go”,请注意,我确实我做什么,回来一排。 786 00:43:46,000 --> 00:43:50,000 迈克被省略此结果集的行的集合, 787 00:43:50,000 --> 00:43:53,000 通常被称为,因为他并没有因为我拥有相同的电子邮件地址。 788 00:43:53,000 --> 00:43:57,000 >> 现在,再次,这里的pset 7你会使用phpMyAdmin作为一种管理工具 789 00:43:57,000 --> 00:44:00,000 学习方式和教学工具 790 00:44:00,000 --> 00:44:03,000 在世界各地的SQL,但在一天结束时 791 00:44:03,000 --> 00:44:08,000 你要编写这些查询里面实际的PHP代码, 792 00:44:08,000 --> 00:44:11,000 ,敬请关注Zamyla的演练中,特别是 793 00:44:11,000 --> 00:44:14,000 这个问题集,你会得到一个参观的分布代码 794 00:44:14,000 --> 00:44:18,000 我们给你的不仅是美学的登录页面 795 00:44:18,000 --> 00:44:21,000 和漂亮的性感的标志,说CS50财务,但是我们也给你 796 00:44:21,000 --> 00:44:24,000 一堆的功能,这将让您的生活更容易一点。 797 00:44:24,000 --> 00:44:27,000 我们也为你写的pset中的一部分, 798 00:44:27,000 --> 00:44:32,000 特别是在登录部分,给你一个有代表性的设计感 799 00:44:32,000 --> 00:44:36,000 实际使用一个控制器,例如,的index.php 800 00:44:36,000 --> 00:44:40,000 login.php的之类的,然后你会看到在pset也有一个模板目录 801 00:44:40,000 --> 00:44:43,000 有你的观点,所有的美学。 802 00:44:43,000 --> 00:44:46,000 因此,整个工作流程中的pset 7将是该 803 00:44:46,000 --> 00:44:49,000 您的用户访问控制器通过一个URL在浏览器中。 804 00:44:49,000 --> 00:44:53,000 该控制器包含PHP代码是你写的,而且里面的PHP代码 805 00:44:53,000 --> 00:44:57,000 可能有一些行的SQL嵌套在双引号之间 806 00:44:57,000 --> 00:45:00,000 传递给函数,我们写查询 807 00:45:00,000 --> 00:45:03,000 这将有助于你的数据库,而无需使用类似 808 00:45:03,000 --> 00:45:05,000 一个管理工具,像phpMyAdmin。 809 00:45:05,000 --> 00:45:08,000 >> 您就可以在PHP代码中写SQL语句 810 00:45:08,000 --> 00:45:11,000 一个PHP数组的结果集, 811 00:45:11,000 --> 00:45:14,000 该查询匹配的行。 812 00:45:14,000 --> 00:45:18,000 同样的,你才能够执行插入或删除 813 00:45:18,000 --> 00:45:22,000 或更新,或类似的,这是相当相似的语法, 814 00:45:22,000 --> 00:45:25,000 你会看到一些网上的引用,从分配代码 815 00:45:25,000 --> 00:45:29,000 在pset收拾自己究竟该如何去这样做。 816 00:45:29,000 --> 00:45:33,000 最终实现我们真的只是表面的SQL 817 00:45:33,000 --> 00:45:36,000 和MySQL的,但它的力量真的是,它使您 818 00:45:36,000 --> 00:45:40,000 把重点放在你想解决的问题,使用的情况下,你想实现 819 00:45:40,000 --> 00:45:43,000 而不必担心那么多了,至少在初期, 820 00:45:43,000 --> 00:45:47,000 在哪里以及如何存储和检索的数据库, 821 00:45:47,000 --> 00:45:50,000 这是毫不夸张地说,Facebook本身开始了其 822 00:45:50,000 --> 00:45:53,000 使用MySQL,然后使用多个MySQL服务器,然后多个MySQL服务器 823 00:45:53,000 --> 00:45:57,000 前长,直到他们真正开始努力思考如何 824 00:45:57,000 --> 00:46:00,000 存储数据,如何更有效地存储的东西, 825 00:46:00,000 --> 00:46:04,000 因此,即使我们会认为是理所当然的事实,索引和唯一性约束 826 00:46:04,000 --> 00:46:08,000 等等工作,有一个非常有趣的谈话 827 00:46:08,000 --> 00:46:12,000 ,这可能最终都导致,所以认识到,我们只是表面 828 00:46:12,000 --> 00:46:17,000 是什么最终可能会为您或您的项目成为相当多的大数据。 829 00:46:17,000 --> 00:46:22,000 >> 随着中说,让我们在这里结束,我们会看到你下周。 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]