1 00:00:00,000 --> 00:00:05,040 2 00:00:05,040 --> 00:00:08,440 >> SAM LEVATICH:欢迎 节这个星期。 3 00:00:08,440 --> 00:00:10,040 我不是安迪。 4 00:00:10,040 --> 00:00:14,590 安迪生了病这一天,和我 那种被称为在最后一分钟 5 00:00:14,590 --> 00:00:15,700 接管。 6 00:00:15,700 --> 00:00:20,920 这是流感季节,所以一定要确保你 是住干净,洗手, 7 00:00:20,920 --> 00:00:24,800 和饮食健康,使 你也一样,不是卧床不起。 8 00:00:24,800 --> 00:00:26,870 >> 但是,如果没有进一步的 废话不多说,让我们开始吧。 9 00:00:26,870 --> 00:00:29,970 今天,我们要谈论 关于PHP bit--如何一点点 10 00:00:29,970 --> 00:00:33,900 PHP涉及到HTML,它是如何 涉及CSS和一些纸幅的 11 00:00:33,900 --> 00:00:36,100 东西你做了最后一次转让。 12 00:00:36,100 --> 00:00:37,930 我们要谈 有关SQL一点 13 00:00:37,930 --> 00:00:41,360 以及如何使用数据库的工作, 这是P的一个非常关键的组成部分 14 00:00:41,360 --> 00:00:43,650 设置8- P设定7。 15 00:00:43,650 --> 00:00:44,480 P设定7。 16 00:00:44,480 --> 00:00:48,400 >> 然后,我们要谈一点 有关视图控制器是如何工作的位 17 00:00:48,400 --> 00:00:54,640 为什么这是一个理念背后的一些 现代的网页和不同的设计。 18 00:00:54,640 --> 00:00:58,760 差不多了很多类型的应用程序 和应用程序,你可能会出货 19 00:00:58,760 --> 00:01:01,120 利用该模型, 视图控制器架构, 20 00:01:01,120 --> 00:01:02,890 你会使用 P中设置7,所以我会 21 00:01:02,890 --> 00:01:05,220 讲一点点 为什么这已经成为 22 00:01:05,220 --> 00:01:07,970 流行的,为什么它是重要的和漂亮的。 23 00:01:07,970 --> 00:01:12,052 然后,我将最终转移到 关于解决P的一些技巧设置7。 24 00:01:12,052 --> 00:01:13,760 如果我们有时间 剩下的底, 25 00:01:13,760 --> 00:01:17,320 我们实际上可以做一些 上一起工作。 26 00:01:17,320 --> 00:01:20,380 >> 因此,PHP。 27 00:01:20,380 --> 00:01:23,790 事实上,你可能已经注意到this-- 你真的没有潜入它 - 28 00:01:23,790 --> 00:01:27,880 但P设定6有一些PHP 这是怎么回事代码。 29 00:01:27,880 --> 00:01:34,710 而由于PHP是一种类似C 语言,PHP,不像HTML和CSS, 30 00:01:34,710 --> 00:01:39,030 是一种编程语言, 而HTML和CSS是静态的。 31 00:01:39,030 --> 00:01:44,050 他们是处理标记语言 与风格和视觉布局。 32 00:01:44,050 --> 00:01:46,230 PHP是实打实的。 33 00:01:46,230 --> 00:01:51,590 >> PHP有循环,它具有条件 - 所有的东西,很有趣约C. 34 00:01:51,590 --> 00:01:56,190 它有几件事情是一个小 位比C,我们将看到更好的, 35 00:01:56,190 --> 00:01:59,760 但我认为,最简单的方法谈 关于PHP只是潜水研究。 36 00:01:59,760 --> 00:02:04,087 所以我要去权 到IDE在此点。 37 00:02:04,087 --> 00:02:06,170 我们要的第一件事情 这样做实际上是看 38 00:02:06,170 --> 00:02:10,169 在一些一点点 PHP代码,这是P中设置6。 39 00:02:10,169 --> 00:02:13,600 让我们做that--方式 之前,我们正在运行的方式 40 00:02:13,600 --> 00:02:18,550 服务器为家电 是,我们将不得不类型 - 41 00:02:18,550 --> 00:02:21,750 既可以使用您的实现 或员工实施 42 00:02:21,750 --> 00:02:27,059 server.c通过进入目录 并运行server.c与不用 43 00:02:27,059 --> 00:02:30,100 arguments--所以叫它的 本地主机,这就是你大概是什么 44 00:02:30,100 --> 00:02:31,849 做了大部分的时间 - 的 然后喂养它 45 00:02:31,849 --> 00:02:35,380 有directory-- 其中作为其根使用 46 00:02:35,380 --> 00:02:38,310 其中,网站将 运行,基本上是这样。 47 00:02:38,310 --> 00:02:42,180 >> 本周的p设置7,如 伟大的,因为我们的代码server.c 48 00:02:42,180 --> 00:02:47,580 是,还有人谁已经 在CS50写这些美好的事情了 49 00:02:47,580 --> 00:02:49,630 有一点点 更多的功能, 50 00:02:49,630 --> 00:02:52,920 一个服务器程序,它是能够 处理多一点 51 00:02:52,920 --> 00:02:56,350 错综复杂的关系,我们将 看到在P组7和P设置8。 52 00:02:56,350 --> 00:03:01,410 并且您启动的方式 服务器只需键入“apache50。” 53 00:03:01,410 --> 00:03:03,960 >> 你做任何事情之前, 你要确保 54 00:03:03,960 --> 00:03:06,070 阿帕奇50不 已经运行,因为它是 55 00:03:06,070 --> 00:03:08,130 在我的机器,我做到了,以测试它。 56 00:03:08,130 --> 00:03:10,320 而你做到这一点通过调用apache50。 57 00:03:10,320 --> 00:03:14,070 停下来,你会看到它停 Web服务器,如果你能在那里寻找 58 00:03:14,070 --> 00:03:16,340 在终端窗口的底部。 59 00:03:16,340 --> 00:03:21,090 然后刚开始,我们 要叫,“apache50开始。” 60 00:03:21,090 --> 00:03:23,150 然后我们要去 给它一个目录。 61 00:03:23,150 --> 00:03:26,950 >> 现在,因为我们想看看 在一些为P的设置6个码 62 00:03:26,950 --> 00:03:32,850 我们已经实施了,其实我 复制的P一点点 63 00:03:32,850 --> 00:03:37,090 设置6码到我自己的文件夹中, 您可以在左边有看到。 64 00:03:37,090 --> 00:03:40,170 这就是所谓的“SECTION8” 在所有大写字母 65 00:03:40,170 --> 00:03:44,510 因为我只是太激动了 以视频直播的今天。 66 00:03:44,510 --> 00:03:47,330 >> 因此,如果我们运行它,它应该 一切都非常有效地开展工作。 67 00:03:47,330 --> 00:03:52,350 它说,好了,我们的网站现在 可在IDE的地址, 68 00:03:52,350 --> 00:03:57,710 基本上,这是你正在使用 正是因为它是在P设定7-- P设定6。 69 00:03:57,710 --> 00:04:00,899 我所有的指标是当今一个索引。 70 00:04:00,899 --> 00:04:02,940 因此,我们可以去那 地址,如果你还记得, 71 00:04:02,940 --> 00:04:05,710 只需点击这个小 按钮在右上角。 72 00:04:05,710 --> 00:04:14,200 >> 你还记得这个代码,这 当你走进hello.php发生。 73 00:04:14,200 --> 00:04:18,000 和哪些代码被设计成 做的是,当你在一个名字类型 74 00:04:18,000 --> 00:04:20,550 这里 - 如果你说山姆 因为这是我name-- 75 00:04:20,550 --> 00:04:23,620 我点击打招呼,当 我们去到下一个页面, 76 00:04:23,620 --> 00:04:25,270 该名称应该显示。 77 00:04:25,270 --> 00:04:28,550 它会说,“喂,山姆” 或“你好,”任意名称 78 00:04:28,550 --> 00:04:32,470 投入它,即使我们去 以一个全新的网页。 79 00:04:32,470 --> 00:04:36,610 >> 这是诸如此类的事情, PHP可以为你做。 80 00:04:36,610 --> 00:04:42,840 PHP是能够通过数据 在两个网页。 81 00:04:42,840 --> 00:04:44,390 这是一个完全不同的页面。 82 00:04:44,390 --> 00:04:46,990 你会看到标题为“Hello”在这里。 83 00:04:46,990 --> 00:04:49,080 实际上,它们具有 同样的冠军,但我 84 00:04:49,080 --> 00:04:52,560 保证它们是不同的网络 网页如果我们看看源。 85 00:04:52,560 --> 00:04:55,890 你可以通过这就是数据 在这个文本字段中输入, 86 00:04:55,890 --> 00:04:59,830 你提交给下一个 页面正在被叫了起来, 87 00:04:59,830 --> 00:05:02,490 然后该数据能够 在那里以其目前的形式。 88 00:05:02,490 --> 00:05:04,810 >> 现在我们还没有实现 这个我们自己,这 89 00:05:04,810 --> 00:05:08,710 就是我们要做的,现在到 排序得到了香精,用于PHP是如何工作的, 90 00:05:08,710 --> 00:05:15,070 但关键的想法是,PHP--可以 那种认为它像一个功能。 91 00:05:15,070 --> 00:05:18,570 东西PHP可以让你 做的是它可以带参数 92 00:05:18,570 --> 00:05:24,710 您输入到HTML页面 通过使用PHP和形式, 93 00:05:24,710 --> 00:05:29,960 它可以通过那些作为参数 给它加载了下一个页面。 94 00:05:29,960 --> 00:05:35,110 >> 在这种情况下,我们加载了这个 页的“打个招呼”按钮。 95 00:05:35,110 --> 00:05:38,960 但现在,其实我 删除了一些代码 96 00:05:38,960 --> 00:05:44,850 在hello.php当时正在运行 这实际上显示了“你好, 97 00:05:44,850 --> 00:05:49,680 世界“或”你好,萨姆“或 “你好,”无论是刚投入。 98 00:05:49,680 --> 00:05:53,620 因此,对于现在,我们 要做到这一点,基本上是这样。 99 00:05:53,620 --> 00:05:56,570 我们将重新创建和 还添加一些更多的功能, 100 00:05:56,570 --> 00:06:00,210 做多一点吧,看 PHP是什么真正的能力。 101 00:06:00,210 --> 00:06:04,870 >> 因此,首先,让我们来谈谈 该文件,hello.php。 102 00:06:04,870 --> 00:06:07,440 因此,如果我们放大了 小bit--现在我 103 00:06:07,440 --> 00:06:10,520 那种试图滚动所有 顺便around--我们走吧。 104 00:06:10,520 --> 00:06:14,220 你会看到它被称为 hello.php,但语法它 105 00:06:14,220 --> 00:06:16,880 看起来像一个HTML文件。 106 00:06:16,880 --> 00:06:20,380 这是因为 在该文件中的实际的PHP 107 00:06:20,380 --> 00:06:25,220 在所有的这些卡之间 问号插入符块。 108 00:06:25,220 --> 00:06:28,610 这里的一切 被认为是PHP代码。 109 00:06:28,610 --> 00:06:32,040 >> 而且你会发现, 当我做了评论, 110 00:06:32,040 --> 00:06:35,320 你会看到熟悉的 两个正斜杠。 111 00:06:35,320 --> 00:06:38,440 如果你还记得,在 HTML,如果我输入评论, 112 00:06:38,440 --> 00:06:42,540 它看起来更接近于 这一点,这是HTML注释。 113 00:06:42,540 --> 00:06:46,570 之间,真是应有尽有 这两个尖括号 114 00:06:46,570 --> 00:06:50,060 现在是PHP代码,这 反映在实际上 115 00:06:50,060 --> 00:06:53,270 这个小注释符号 变成一个注释。 116 00:06:53,270 --> 00:06:58,420 >> 所以每次你写PHP代码,甚至 如果有在它之外没有HTML代码, 117 00:06:58,420 --> 00:07:02,720 它总是将是 括在这些尖括号 118 00:07:02,720 --> 00:07:04,080 带有问号的。 119 00:07:04,080 --> 00:07:08,260 那种你可以考虑一下它 - 怎么回事 跑在你的C程序代码 120 00:07:08,260 --> 00:07:13,950 被封闭在一个int主,无效的, 大括号,结束大括号的语句。 121 00:07:13,950 --> 00:07:17,100 你会看到在大括号 PHP也一样,但这是有点 122 00:07:17,100 --> 00:07:20,490 像PHP的主要方法。 123 00:07:20,490 --> 00:07:25,630 >> 所以,现在,我们该怎么做在PHP什么? 124 00:07:25,630 --> 00:07:29,190 现在,PHP是一种编程 语言这是非常类似C, 125 00:07:29,190 --> 00:07:30,970 但它的运作在网络上。 126 00:07:30,970 --> 00:07:33,270 所以一件事, 你会immediately-- 1 127 00:07:33,270 --> 00:07:38,130 你真的跟做的第一件事 ℃的你打印的东西了,对吧? 128 00:07:38,130 --> 00:07:42,290 因此,在C中,我们做到了 用printf函数。 129 00:07:42,290 --> 00:07:46,430 我们给它一个字符串, 可能有一个新的生产线, 130 00:07:46,430 --> 00:07:49,850 然后我们终止 它与一个分号。 131 00:07:49,850 --> 00:07:53,790 >> 所以说我们要做到这一点的方式 在PHP--因为它不是相当的printf。 132 00:07:53,790 --> 00:07:55,940 这是不同的语法一点点。 133 00:07:55,940 --> 00:08:02,580 我们打​​印的东西出路 在PHP是我们说,“回声你好” 134 00:08:02,580 --> 00:08:04,180 或“回声”的任何文字。 135 00:08:04,180 --> 00:08:09,830 并且具有这样做的效果 printf输出字符串,“你好。” 136 00:08:09,830 --> 00:08:11,990 并增加了新的生产线给它。 137 00:08:11,990 --> 00:08:16,000 >> 因此,让我们现在做sure-- 我会再次缩小了一点bit-- 138 00:08:16,000 --> 00:08:18,250 让我们确保 该代码工作 139 00:08:18,250 --> 00:08:21,030 因为很可能会 以及在这个代码中的错误 140 00:08:21,030 --> 00:08:22,880 我们将必须解决。 141 00:08:22,880 --> 00:08:25,860 因此,服务器已经在运行。 142 00:08:25,860 --> 00:08:30,630 因此,如果我们滚动回落至底部, 是啊,在服务器仍在运行。 143 00:08:30,630 --> 00:08:34,510 因此,如果我们只需轻按在此 有点右这里 - 144 00:08:34,510 --> 00:08:37,620 welcome--我们应该get--很大。 145 00:08:37,620 --> 00:08:39,930 >> 我们仍然拥有的 熟悉的“问好”的对话, 146 00:08:39,930 --> 00:08:45,750 但是当我输入“喜”,我们拭目以待 文本“你好”确实是 147 00:08:45,750 --> 00:08:50,080 打印出来,这是完全一样 我们预计,由于回响在PHP 148 00:08:50,080 --> 00:08:53,190 就像是一个printf语句。 149 00:08:53,190 --> 00:09:01,410 于是回到代码,如何在P设定6那样 您提供的发行代码 150 00:09:01,410 --> 00:09:05,920 让这个PHP会 输出的东西,你 151 00:09:05,920 --> 00:09:07,920 上一个屏幕上键入的? 152 00:09:07,920 --> 00:09:10,350 >> 而要排序的研究 为什么出现这种情况,我们 153 00:09:10,350 --> 00:09:15,510 要进入的index.html,这 是原始的文件,该文件是 154 00:09:15,510 --> 00:09:18,710 显示了这个屏幕上 与“打个招呼”按钮。 155 00:09:18,710 --> 00:09:20,950 您会注意到有 所有的经典的东西 156 00:09:20,950 --> 00:09:26,910 我们来自HTML这样的期待 因为这些东西,这些标签封闭 157 00:09:26,910 --> 00:09:31,080 在尖括号,如PHP 但没有问号, 158 00:09:31,080 --> 00:09:34,650 这表明一个特别的事情为HTML。 159 00:09:34,650 --> 00:09:36,895 我们有称号,这是“你好”。 160 00:09:36,895 --> 00:09:41,010 而且你会发现,正如我们所看到的, 标题是在两种情况下的“hello”。 161 00:09:41,010 --> 00:09:43,260 让我们改变这一个 以“说”只是让我们 162 00:09:43,260 --> 00:09:48,170 能够区分自己哪里了。 163 00:09:48,170 --> 00:09:49,600 >> 但是,我们已经有了一个身体。 164 00:09:49,600 --> 00:09:52,690 然后是有趣的一点,在 位,显示了在HTML, 165 00:09:52,690 --> 00:09:54,530 是这样的表单元素。 166 00:09:54,530 --> 00:09:56,370 因此,我们有一个形式。 167 00:09:56,370 --> 00:09:58,330 这是关键。 168 00:09:58,330 --> 00:10:00,530 这是我们如何使用PHP。 169 00:10:00,530 --> 00:10:05,790 的动作参数 形式表示,hello.php 170 00:10:05,790 --> 00:10:09,310 就是我们要发送的 在这种形式的值。 171 00:10:09,310 --> 00:10:13,830 这是我们传递 参数,可以这么说。 172 00:10:13,830 --> 00:10:18,680 >> 你会注意到这里还有一件事 是,该方法是“获取”。 173 00:10:18,680 --> 00:10:24,450 有两个主 方法通过在后 174 00:10:24,450 --> 00:10:28,750 可以使用PHP来传递数据 websites--网页之间, 175 00:10:28,750 --> 00:10:30,500 rather--此分配。 176 00:10:30,500 --> 00:10:34,070 而这些方法都是“get”和“后”。 177 00:10:34,070 --> 00:10:37,010 有一些微妙 GET和POST之间的区别 178 00:10:37,010 --> 00:10:40,520 我们会得到into--我们 将“得”到,如果你愿意。 179 00:10:40,520 --> 00:10:44,030 >> 但是,对于所有的意图和 目的,get和post 180 00:10:44,030 --> 00:10:47,120 都只是方式 你传递参数 181 00:10:47,120 --> 00:10:49,500 略有不同的执行。 182 00:10:49,500 --> 00:10:53,500 现在,我们要使用get因为 得到的是什么最初使用 183 00:10:53,500 --> 00:10:57,340 在P的PHP文件中设置6。 184 00:10:57,340 --> 00:11:00,850 而实际上,如果我们进去看看 之前我们已经别的编辑什么, 185 00:11:00,850 --> 00:11:03,090 我会打个招呼 用于:你叫什么名字? 186 00:11:03,090 --> 00:11:03,812 >> 听众:艾略特。 187 00:11:03,812 --> 00:11:04,770 SAM LEVATICH:哦,天哪。 188 00:11:04,770 --> 00:11:05,600 我不知道如何拼写的。 189 00:11:05,600 --> 00:11:06,766 你能拼一下吗? 190 00:11:06,766 --> 00:11:08,710 听众:E-L-L-I-O-T。 191 00:11:08,710 --> 00:11:09,720 >> SAM LEVATICH:我-O-T? 192 00:11:09,720 --> 00:11:10,440 >> 听众:是的。 193 00:11:10,440 --> 00:11:10,960 >> SAM LEVATICH:完美。 194 00:11:10,960 --> 00:11:11,210 好。 195 00:11:11,210 --> 00:11:12,751 我想我确实知道如何拼写的。 196 00:11:12,751 --> 00:11:13,510 对于那个很抱歉。 197 00:11:13,510 --> 00:11:16,560 但是,如果我们说“打招呼,”这不是 它不会显示在屏幕上 198 00:11:16,560 --> 00:11:18,476 然而,由于我们修改 代码一点点。 199 00:11:18,476 --> 00:11:21,290 但是,如果我们“打个招呼” - 好了,“你好”就在这里。 200 00:11:21,290 --> 00:11:24,137 但是,如果我们仔细 看看URL本身, 201 00:11:24,137 --> 00:11:26,220 我们将看到它结束 与hello.php?NAME =埃利奥特。 202 00:11:26,220 --> 00:11:30,980 203 00:11:30,980 --> 00:11:37,180 >> 所以,这是一种方式 连通到下一个网页 204 00:11:37,180 --> 00:11:39,240 我们已经传递的参数。 205 00:11:39,240 --> 00:11:40,870 我们说的名字=埃利奥特。 206 00:11:40,870 --> 00:11:46,290 而这最终P如何设置6 访问我们通过在变量 207 00:11:46,290 --> 00:11:47,520 通过形式。 208 00:11:47,520 --> 00:11:51,470 这是东西 所特有的GET请求。 209 00:11:51,470 --> 00:11:57,480 GET请求,使参数 在网站的URL已知的。 210 00:11:57,480 --> 00:12:01,190 >> 你会记得,太多, P中设置6,你 211 00:12:01,190 --> 00:12:04,450 只好写一个函数 该处理的事实 212 00:12:04,450 --> 00:12:09,700 这个查询字符串 一个文件后,可能存在。 213 00:12:09,700 --> 00:12:14,684 有可能是一个问号,后面跟随 通过基本上任意数目的字符。 214 00:12:14,684 --> 00:12:16,350 而这正是这里发生了。 215 00:12:16,350 --> 00:12:21,280 你有原因解析 在P中实现server.c的 216 00:12:21,280 --> 00:12:27,570 设定6是使你能告诉 PHP代码的NAME =埃利奥特。 217 00:12:27,570 --> 00:12:30,460 您需要能够以 解析出的URL 218 00:12:30,460 --> 00:12:35,900 使有问题的PHP文件 知道它处理。 219 00:12:35,900 --> 00:12:39,350 >> 因此,希望这给 动机server.c 220 00:12:39,350 --> 00:12:43,900 现在我们继续前进 的C外到PHP。 221 00:12:43,900 --> 00:12:48,240 因此,让我们真正专注于访问 通过GET请求事情现在 222 00:12:48,240 --> 00:12:48,880 在此刻。 223 00:12:48,880 --> 00:12:50,157 我要保存这个。 224 00:12:50,157 --> 00:12:51,240 我们没有改变任何东西。 225 00:12:51,240 --> 00:12:56,080 看起来我们已经有了一个输入栏。 226 00:12:56,080 --> 00:12:58,550 >> 我们设置一些属性, 因为我们可以做一个HTML。 227 00:12:58,550 --> 00:12:59,550 这些都是简单的事情。 228 00:12:59,550 --> 00:13:00,580 我们不需要这些。 229 00:13:00,580 --> 00:13:03,750 但是,我们已经有了自动完成了, 这基本上says--你知道, 230 00:13:03,750 --> 00:13:05,710 当你输入的东西 入网络,有时 231 00:13:05,710 --> 00:13:07,355 它试图填补的为您服务。 232 00:13:07,355 --> 00:13:08,230 所以这是一个很好的事情。 233 00:13:08,230 --> 00:13:11,700 我们要关闭它用于此目的。 234 00:13:11,700 --> 00:13:13,970 这是一个CS50的决定。 235 00:13:13,970 --> 00:13:15,640 因此,我们可以删除,如果我们想要的。 236 00:13:15,640 --> 00:13:19,510 >> 自动对焦刚粘光标 在开始时的形式的权利。 237 00:13:19,510 --> 00:13:21,060 同样,没有太重要了。 238 00:13:21,060 --> 00:13:26,220 >> 但NAME =“名” - 这是一个有点 棘手,因为它的名字和名称。 239 00:13:26,220 --> 00:13:28,730 但我们可以已经改变 这对别的东西。 240 00:13:28,730 --> 00:13:30,563 而事实上,这是 我们要做的现在。 241 00:13:30,563 --> 00:13:34,830 我们会说“的人,”这 有点像名 242 00:13:34,830 --> 00:13:36,790 如果一个人是由他们的名字来定义。 243 00:13:36,790 --> 00:13:41,480 >> 因此,让我们关闭此, 重新打开了我们的网站: 244 00:13:41,480 --> 00:13:46,110 因为我们的服务器仍在运行 Apache的50,我们会说,你好,这里是 245 00:13:46,110 --> 00:13:47,200 艾略特一次。 246 00:13:47,200 --> 00:13:48,460 为什么不呢? 247 00:13:48,460 --> 00:13:49,220 您好。 248 00:13:49,220 --> 00:13:52,880 如果我们走在这里,我们将看到 而不是名称,则=埃利奥特, 249 00:13:52,880 --> 00:13:55,200 它说:人=埃利奥特。 250 00:13:55,200 --> 00:14:00,060 这就是这一事实的直接结果 我们只是改变了名称=“人”。 251 00:14:00,060 --> 00:14:06,840 >> 因此在一个输入元件 HTML表单的名称字段 252 00:14:06,840 --> 00:14:10,590 是标识符的 这正在被传递的参数。 253 00:14:10,590 --> 00:14:14,250 这就像如果你创建一个函数 “加”是参加了两个整数 254 00:14:14,250 --> 00:14:16,670 你说的INT A和INT湾 255 00:14:16,670 --> 00:14:22,680 这将是一个名称,并且如果 你想要的另一种形式,这 256 00:14:22,680 --> 00:14:27,800 我们可以通过复制做到公正, 粘贴,那么我们将不得不名湾 257 00:14:27,800 --> 00:14:31,030 >> 所以,现在我们有两个参数: 正在通过传递 258 00:14:31,030 --> 00:14:36,970 到达下一个website-- 下一个网页,hello.php。 259 00:14:36,970 --> 00:14:39,770 我们可以清楚地看到 这一次,如果我们想要的。 260 00:14:39,770 --> 00:14:44,830 这是处理最简单的方法 在IDE的网页代码,基本上是这样。 261 00:14:44,830 --> 00:14:47,940 你启动服务器,把它 运行,然后每一次 262 00:14:47,940 --> 00:14:50,649 做出一些改变,只需关闭 该文件只是为了安全起见。 263 00:14:50,649 --> 00:14:52,440 按后退按钮 是有点棘手 264 00:14:52,440 --> 00:14:55,800 因为它可能会加载一个较早 版本,而不是最更新之一。 265 00:14:55,800 --> 00:14:59,200 >> 然后你只需点击 按钮再次,弹出右键up--哦, 266 00:14:59,200 --> 00:15:00,510 现在有两种形式。 267 00:15:00,510 --> 00:15:10,440 因此,如果我们输入一件事到每个 埃德蒙顿“贾森赫什霍恩,”对于instance-- 268 00:15:10,440 --> 00:15:11,590 我们打​​招呼。 269 00:15:11,590 --> 00:15:12,840 我们仰望我们的参数。 270 00:15:12,840 --> 00:15:18,910 看起来我们已经得到了,因为 预计,A =杰森和b =赫什霍恩, 271 00:15:18,910 --> 00:15:23,760 它代表了两个参数 我们传递给这个函数。 272 00:15:23,760 --> 00:15:27,900 >> 所以,现在,让我们真正得到 实现该功能,我们 273 00:15:27,900 --> 00:15:30,840 有P中设置6。 274 00:15:30,840 --> 00:15:32,490 所以现在我们只是呼应打招呼。 275 00:15:32,490 --> 00:15:34,310 而这还不是非常有用的。 276 00:15:34,310 --> 00:15:38,530 我们要回应一些变量 这是传递给我们。 277 00:15:38,530 --> 00:15:40,320 我们也知道这个变量的名称。 278 00:15:40,320 --> 00:15:41,770 我们有一个,我们已经湾 279 00:15:41,770 --> 00:15:43,500 因此,我们可以选择回声任何一个。 280 00:15:43,500 --> 00:15:45,470 >> 但是,我们如何获得呢? 281 00:15:45,470 --> 00:15:48,820 嗯,也有一定的 在PHP中的全局变量。 282 00:15:48,820 --> 00:15:51,240 而且我会写 他们在这里评论。 283 00:15:51,240 --> 00:15:59,910 这两个最重要的是GET 并张贴我们的目的现在。 284 00:15:59,910 --> 00:16:05,350 这些是阵列或, 技术上,该词典 285 00:16:05,350 --> 00:16:10,540 在那里我们的变量,我们是 传递到下一个网页直播。 286 00:16:10,540 --> 00:16:14,520 我们将很快看到如何使用它们。 287 00:16:14,520 --> 00:16:19,720 >> 关于PHP代码的另一个简要说明 而它 - 在C中的一些细节, 288 00:16:19,720 --> 00:16:23,260 声明变量 或者使用变量, 289 00:16:23,260 --> 00:16:24,570 你首先必须声明它们。 290 00:16:24,570 --> 00:16:30,860 而你又做什么,当你 宣称他们是说INT一个或炭湾 291 00:16:30,860 --> 00:16:35,630 你必须申报这些类型 之前变量创造了他们。 292 00:16:35,630 --> 00:16:38,800 PHP--你不需要做任何的。 293 00:16:38,800 --> 00:16:42,522 PHP不要求 变量的类型。 294 00:16:42,522 --> 00:16:44,480 和使用的方式 创建一个变量 - 而 295 00:16:44,480 --> 00:16:49,930 不是说INT,CHAR,string-- 这是真正的char *,因为我们知道 - 296 00:16:49,930 --> 00:16:52,180 而不是做所有的 即,因为一切 297 00:16:52,180 --> 00:16:54,620 是相同类型的, 无类型,我们只要 298 00:16:54,620 --> 00:16:59,210 使用一个字符,这 是美元符号。 299 00:16:59,210 --> 00:17:03,700 你会看到它已经弹出 起来,小自动完成的事情。 300 00:17:03,700 --> 00:17:11,380 而且它说_GET和彦博 有两种选择,我有可用 301 00:17:11,380 --> 00:17:11,900 对我来说。 302 00:17:11,900 --> 00:17:16,430 其中的一些其他的东西 在PHP中其它全局变量 303 00:17:16,430 --> 00:17:18,430 您将使用过 P的过程设置7​​。 304 00:17:18,430 --> 00:17:20,569 现在我们要 注重GET和POST。 305 00:17:20,569 --> 00:17:22,910 但是,这是一个有益的 该IDE做的事情 306 00:17:22,910 --> 00:17:24,980 一旦你输入的地方 在美元符号, 307 00:17:24,980 --> 00:17:28,760 它会开始填充全局变量 或者你已经定义的变量。 308 00:17:28,760 --> 00:17:34,360 >> 所以,如果你想定义 一个叫做变量“字符串” 309 00:17:34,360 --> 00:17:38,290 你可以只将其设置为“喜”。 310 00:17:38,290 --> 00:17:40,100 而且它基本上是这么简单。 311 00:17:40,100 --> 00:17:44,720 然后我们可以做 像“回声$字符串。” 312 00:17:44,720 --> 00:17:48,524 IDE将要抛出一些 错误,如果我做错什么, 313 00:17:48,524 --> 00:17:50,190 所以希望我做的一切权利。 314 00:17:50,190 --> 00:17:52,060 但错误总是这样出现的。 315 00:17:52,060 --> 00:17:56,670 >> 关于另一个棘手的事情 PHP是,它不是编译。 316 00:17:56,670 --> 00:18:00,640 因此,与C程序,你会怎么做 日常of--基本上, 317 00:18:00,640 --> 00:18:02,710 你会做编辑 你的代码,你会来救它, 318 00:18:02,710 --> 00:18:04,460 然后你会 使,在化妆是 319 00:18:04,460 --> 00:18:08,830 调用该编译器的步骤中, 铛,使你的代码,该文本 320 00:18:08,830 --> 00:18:10,570 文件,到可执行。 321 00:18:10,570 --> 00:18:15,550 PHP是C类,但它的执行 在通过Web浏览器飞。 322 00:18:15,550 --> 00:18:17,640 因此,有没有办法知道。 323 00:18:17,640 --> 00:18:19,790 >> 请将引发这些 有用的错误,对吧? 324 00:18:19,790 --> 00:18:22,190 这将是一样,你 没有宣布这个变量 325 00:18:22,190 --> 00:18:23,320 你尝试过使用它。 326 00:18:23,320 --> 00:18:29,120 你做了这一切坏stuff--段错误, 段错误,所有诸如此类的有趣的时代 327 00:18:29,120 --> 00:18:31,000 随化妆。 328 00:18:31,000 --> 00:18:33,920 PHP是一种双刃剑 因为你不会得到这些错误, 329 00:18:33,920 --> 00:18:37,770 但是这也意味着你不会知道 真的有什么错你的程序 330 00:18:37,770 --> 00:18:39,840 如果你只是运行它,它不工作。 331 00:18:39,840 --> 00:18:45,130 但调试器应该指出 一些希望有用的小事情 332 00:18:45,130 --> 00:18:47,950 语法就可以解决。 333 00:18:47,950 --> 00:18:52,850 >> 因此,如果我们去了用于: 说了,让我们关闭了。 334 00:18:52,850 --> 00:18:54,522 重新打开。 335 00:18:54,522 --> 00:18:55,480 我们又回到了这里。 336 00:18:55,480 --> 00:18:57,210 所以,我们已经有了一个变量 和一变量b。 337 00:18:57,210 --> 00:18:58,626 而这些都不会最终无所谓。 338 00:18:58,626 --> 00:19:01,850 我们会打电话给他们^ h和g 无特殊原因。 339 00:19:01,850 --> 00:19:03,120 >> 而我们打招呼。 340 00:19:03,120 --> 00:19:07,480 现在看来,我们的字符串 “喜”确实打印。 341 00:19:07,480 --> 00:19:10,460 我们创建了一个名为变量 “弦”,将其设置为“喜”。 342 00:19:10,460 --> 00:19:15,520 请注意,我们没有做 的malloc或作出一个字符数组。 343 00:19:15,520 --> 00:19:19,110 >> 在PHP中,由于变量 是无类型,一个字符串 344 00:19:19,110 --> 00:19:22,230 是一样的字符为 所有意图和目的。 345 00:19:22,230 --> 00:19:23,570 这可能是“喜”。 346 00:19:23,570 --> 00:19:26,340 这可能只是角色k。 347 00:19:26,340 --> 00:19:29,290 这可以是一个数字1。 348 00:19:29,290 --> 00:19:30,300 而且它并不关心。 349 00:19:30,300 --> 00:19:33,560 PHP不关心 你的变量的类型。 350 00:19:33,560 --> 00:19:34,390 或者,它确实照顾。 351 00:19:34,390 --> 00:19:36,240 当您尝试它关心 和做的事情吧, 352 00:19:36,240 --> 00:19:38,790 但它并不关心在 声明一步。 353 00:19:38,790 --> 00:19:46,960 >> 就这样你就可以在C,你可以 栈像这样的声明串 354 00:19:46,960 --> 00:19:51,130 虽然说“栈”是一个小 一个潜在的用词不当,当位 355 00:19:51,130 --> 00:19:52,230 我们谈论的PHP。 356 00:19:52,230 --> 00:19:54,020 但是,我们不必担心。 357 00:19:54,020 --> 00:19:55,936 因此,我们得到了我们的字符串 “嗨,”我们回显字符串。 358 00:19:55,936 --> 00:19:58,880 所以,现在我们已经讨论了变数。 359 00:19:58,880 --> 00:20:06,060 所以,现在我们需要谈谈get和 发布并执行的最后一件事那 360 00:20:06,060 --> 00:20:12,660 需要真正得到这个备份 到P的功能设置6。 361 00:20:12,660 --> 00:20:14,990 所以现在我们 呼应字符串,但我们 362 00:20:14,990 --> 00:20:17,080 确实有这些变量GET和POST。 363 00:20:17,080 --> 00:20:19,430 而且因为我们使用 该方法得到的,它 364 00:20:19,430 --> 00:20:24,810 很自然,我们的变量 我们感兴趣的,A和B, 365 00:20:24,810 --> 00:20:29,870 将位于在阵列中 或字典,在技术上得到。 366 00:20:29,870 --> 00:20:33,510 >> 所以,如果我们成立了得到这样 你groups--我按下进入 367 00:20:33,510 --> 00:20:36,770 它不喜欢它 - 但在这里,我们有得到。 368 00:20:36,770 --> 00:20:38,000 并因此获得已经存在。 369 00:20:38,000 --> 00:20:41,380 因此,我们已经可以开始访问 有些人会的元素。 370 00:20:41,380 --> 00:20:45,000 如果我们得到的,这个语法 在PHP中的数组非常类似C。 371 00:20:45,000 --> 00:20:47,900 我们有我们的两个方括号。 372 00:20:47,900 --> 00:20:53,440 >> 所以,如果我们说得​​到一个正常的 数组,我们就可以访问 373 00:20:53,440 --> 00:20:55,600 第零指数,第一索引。 374 00:20:55,600 --> 00:20:56,840 PHP是零指标。 375 00:20:56,840 --> 00:21:00,550 我们可以说零,一, two--这样的东西。 376 00:21:00,550 --> 00:21:03,420 而且我一直在说,得到 在技​​术上是一本字典。 377 00:21:03,420 --> 00:21:08,290 那么,什么PHP做的引擎盖下, 这是比C一点点更好, 378 00:21:08,290 --> 00:21:12,760 是它已经是给你一些 词典功能,这 379 00:21:12,760 --> 00:21:16,240 真的是哈希表, 或尝试,据说。 380 00:21:16,240 --> 00:21:19,360 或者,在技术上它 可以一试为好。 381 00:21:19,360 --> 00:21:25,500 但是PHP正在实施一个哈希表, 形成一个有效的词典。 382 00:21:25,500 --> 00:21:28,400 >> 因此,我们知道这个名字 我们的变量,对不对? 383 00:21:28,400 --> 00:21:32,440 它被传递 通过PHP查询字符串。 384 00:21:32,440 --> 00:21:37,290 我们有A = H且b =克,其中和b 是变量的名称。 385 00:21:37,290 --> 00:21:41,580 这样的方式,我们可以访问 对应于密钥值 386 00:21:41,580 --> 00:21:45,055 在我们的词典 只是说_GET_GET [“一个”。 387 00:21:45,055 --> 00:21:48,170 388 00:21:48,170 --> 00:21:51,365 >> 所以现在我们有_GET [“一”。 389 00:21:51,365 --> 00:21:56,930 如果我们只需更换里面 我们的回声,如果我们回声_GET_GET [“A”] - 390 00:21:56,930 --> 00:22:02,410 我们会如果调试器看到 抛出约this--任何错误 391 00:22:02,410 --> 00:22:05,620 我们将保存并关闭了这一点。 392 00:22:05,620 --> 00:22:07,130 打开它。 393 00:22:07,130 --> 00:22:10,390 所以,我们只是做了正确的 现在,所以B不应该的问题。 394 00:22:10,390 --> 00:22:12,980 “她”和“他” - “哼。” “她”和“哼哼。” 395 00:22:12,980 --> 00:22:14,810 听起来不错。 396 00:22:14,810 --> 00:22:18,040 >> 它打印出来 “她说,”这太疯狂了。 397 00:22:18,040 --> 00:22:21,920 但是,这到底是什么 是发生P中设置6。 398 00:22:21,920 --> 00:22:27,240 基本上,P设定6 是doing--回声你好, 399 00:22:27,240 --> 00:22:31,580 name--其中它有一个 变量的名称,它只是 400 00:22:31,580 --> 00:22:35,520 问你在文本的位输入。 401 00:22:35,520 --> 00:22:37,380 以前也有一些 额外的代码在哪里 402 00:22:37,380 --> 00:22:40,550 它包括if语句, 这是我们现在可以做。 403 00:22:40,550 --> 00:22:50,120 >> 我们可以说,如果存在,其 是PHP中的功能, 404 00:22:50,120 --> 00:22:55,110 _GET用下划线,“名” - 这基本上是说, 405 00:22:55,110 --> 00:22:58,760 “如果名字已经填充了”,因为 我们只需单击按钮 406 00:22:58,760 --> 00:23:02,580 无需提交表单 输入任何内容到该领域。 407 00:23:02,580 --> 00:23:07,760 而我们总结了在我们的 友好的大括号。 408 00:23:07,760 --> 00:23:09,175 我们可以有一个else语句。 409 00:23:09,175 --> 00:23:13,300 410 00:23:13,300 --> 00:23:18,820 而这一切在PHP的角度 支架,问号,尖括号, 411 00:23:18,820 --> 00:23:20,040 如果你愿意。 412 00:23:20,040 --> 00:23:21,750 >> 现在我们可以看到,如果这个工程。 413 00:23:21,750 --> 00:23:26,300 我一直在等待它调试 和废话了我,基本上, 414 00:23:26,300 --> 00:23:28,410 但它没有。 415 00:23:28,410 --> 00:23:30,830 也许这将现在 因为我讲了。 416 00:23:30,830 --> 00:23:31,330 对。 417 00:23:31,330 --> 00:23:32,510 它做到了,其实。 418 00:23:32,510 --> 00:23:34,610 那么,什么也没有显示出来。 419 00:23:34,610 --> 00:23:38,750 这是因为一些错误 我写在PHP代码。 420 00:23:38,750 --> 00:23:42,844 而我所提到的调试 是棘手,因为在PHP中,我们 421 00:23:42,844 --> 00:23:45,260 没有预先编译 而编译器是不喜欢, 422 00:23:45,260 --> 00:23:46,710 这里的地方你的错误。 423 00:23:46,710 --> 00:23:49,690 >> 但是,我们能做些什么 is--做的人记住 424 00:23:49,690 --> 00:23:57,010 如何看待不同的网络 该PHP--或网站请求 425 00:23:57,010 --> 00:23:57,620 发送? 426 00:23:57,620 --> 00:24:00,290 [?马林?]这样做的 讲座一次或两次。 427 00:24:00,290 --> 00:24:05,830 你还记得我们去哪里找 不同的债务和200 OKS, 428 00:24:05,830 --> 00:24:09,780 正在发送的所有这些代码 通过HTTP的网页,网页? 429 00:24:09,780 --> 00:24:12,514 曾记否 我们去哪里做? 430 00:24:12,514 --> 00:24:13,787 >> 听众:页面源代码。 431 00:24:13,787 --> 00:24:14,870 SAM LEVATICH:页面源。 432 00:24:14,870 --> 00:24:15,890 究竟。 433 00:24:15,890 --> 00:24:19,230 如果你去页Source--完美的。 434 00:24:19,230 --> 00:24:21,630 所以页面源代码拉起督察。 435 00:24:21,630 --> 00:24:23,140 >> 而我使用的Safari浏览器。 436 00:24:23,140 --> 00:24:25,790 你们很多人大概会 可以使用Chrome或Firefox。 437 00:24:25,790 --> 00:24:27,750 但只要你 在任何现代browser-- 438 00:24:27,750 --> 00:24:29,500 并随时跟进 同时,如果你想要的。 439 00:24:29,500 --> 00:24:32,560 您最多可以输入此代码或 只是看在P组6的内部 440 00:24:32,560 --> 00:24:35,820 目录中一些类似的东西。 441 00:24:35,820 --> 00:24:41,020 hello.php是我们 目前正在仿效。 442 00:24:41,020 --> 00:24:42,476 >> 所以有各种标签。 443 00:24:42,476 --> 00:24:43,850 我们可以看一下所有的资源。 444 00:24:43,850 --> 00:24:45,810 我们可以看到的源代码。 445 00:24:45,810 --> 00:24:49,900 所以看起来它没有 闯过身体到底。 446 00:24:49,900 --> 00:24:54,890 它在PHP中,它发现了一个错误 停止加载整个网页。 447 00:24:54,890 --> 00:24:58,320 我们甚至没有结束 标记HTML或任何东西。 448 00:24:58,320 --> 00:25:07,189 >> 如果我们看一下网络,我们可以 看到我们正在发送的请求。 449 00:25:07,189 --> 00:25:07,980 这是域。 450 00:25:07,980 --> 00:25:09,270 这是地址。 451 00:25:09,270 --> 00:25:10,070 这是一个文档。 452 00:25:10,070 --> 00:25:14,310 我们使用get方法。 453 00:25:14,310 --> 00:25:15,760 >> 而且它是红色的。 454 00:25:15,760 --> 00:25:19,030 或者,它是红色的,当我 不选择它。 455 00:25:19,030 --> 00:25:22,680 我怎么不选择呢? 456 00:25:22,680 --> 00:25:23,980 那么,它是红色的。 457 00:25:23,980 --> 00:25:25,201 让我刷新。 458 00:25:25,201 --> 00:25:25,700 在那里,它是。 459 00:25:25,700 --> 00:25:26,640 现在,它是红色。 460 00:25:26,640 --> 00:25:30,530 >> 因此,它是红色的,这意味着 它失败了,这是不好的。 461 00:25:30,530 --> 00:25:32,280 所以,让我们来看看它为什么失败。 462 00:25:32,280 --> 00:25:37,070 因此,所有的页面源可以 基本上告诉你,是你的事 463 00:25:37,070 --> 00:25:38,720 没有工作,我们已经可以看到。 464 00:25:38,720 --> 00:25:42,100 因此,理想情况下将有 是更为有用的工具。 465 00:25:42,100 --> 00:25:45,710 还有一些浏览器扩展 ,让您的PHP调试, 466 00:25:45,710 --> 00:25:50,490 但我们不打算 可以写一吨的PHP, 467 00:25:50,490 --> 00:25:53,190 所以它可能只是最好的 翻阅你的代码 468 00:25:53,190 --> 00:25:56,760 仔细,只要确保 它没有做别的事情。 469 00:25:56,760 --> 00:26:03,876 >> 因此,让我们来看看,如果这个格式 if语句是问题的所在。 470 00:26:03,876 --> 00:26:07,420 我想加载备份在这里。 471 00:26:07,420 --> 00:26:09,830 你好。 472 00:26:09,830 --> 00:26:11,350 所以这是一个问题。 473 00:26:11,350 --> 00:26:15,130 >> 因此,对于正确的语法 PHP的,PHP是怎么回事 474 00:26:15,130 --> 00:26:17,369 为C类的,你会看到循环。 475 00:26:17,369 --> 00:26:18,410 if语句,你会看到的。 476 00:26:18,410 --> 00:26:20,920 你会看到所有的这些朋友 你已经熟悉 477 00:26:20,920 --> 00:26:24,820 超过课程 这CS50学期。 478 00:26:24,820 --> 00:26:29,960 但是,最好的办法弄清楚如何 做一下PHP是谷歌, 479 00:26:29,960 --> 00:26:33,170 还是要看PHP代码的一些例子 因为你知道的功能。 480 00:26:33,170 --> 00:26:35,080 >> 你知道你能 做的程序。 481 00:26:35,080 --> 00:26:35,976 你可以循环。 482 00:26:35,976 --> 00:26:37,600 您可以根据需要循环多次。 483 00:26:37,600 --> 00:26:39,433 您可以循环中的所有 各种不同的方式。 484 00:26:39,433 --> 00:26:40,700 您可以创建功能。 485 00:26:40,700 --> 00:26:43,241 您可以创建函数 呼叫等功能,功能 486 00:26:43,241 --> 00:26:44,150 那个自称。 487 00:26:44,150 --> 00:26:45,733 而且你的名字,这些概念。 488 00:26:45,733 --> 00:26:49,860 你有递归,循环, 如果,其他的控制流。 489 00:26:49,860 --> 00:26:51,300 所以,谷歌是你最好的朋友。 490 00:26:51,300 --> 00:26:53,540 甚至说,“PHP如果 声明“,并有会 491 00:26:53,540 --> 00:26:57,740 要吨,职位 答案给其他人 492 00:26:57,740 --> 00:27:02,090 谁已经有类似的问题给你, 谁是刚刚开始接触PHP 493 00:27:02,090 --> 00:27:03,820 和好奇语法的事情。 494 00:27:03,820 --> 00:27:08,480 >> 因为我们拥有的是奢侈品 能看P中集6的代码中, 495 00:27:08,480 --> 00:27:14,980 我们实际上拉起来,看到 好了,下面是一些有趣的事情。 496 00:27:14,980 --> 00:27:18,070 因此,这是它实际上 看起来像P中设置6。 497 00:27:18,070 --> 00:27:20,340 因此,如果我们通过这个, 我们可以看到,我们已经 498 00:27:20,340 --> 00:27:27,150 有几个这些小的 PHP般的问号位。 499 00:27:27,150 --> 00:27:29,050 >> 而且不会有大括号。 500 00:27:29,050 --> 00:27:30,250 有冒号。 501 00:27:30,250 --> 00:27:32,340 而且有大 括号中的PHP,但是这 502 00:27:32,340 --> 00:27:38,700 是一种格式和做的一种方式 PHP与HTML效果很好 503 00:27:38,700 --> 00:27:43,830 因为如你所见,我们现在要关门 关闭这些PHP bits--了别人的 504 00:27:43,830 --> 00:27:49,770 而如果和所有that--后的 我们在他们里面穿插HTML 505 00:27:49,770 --> 00:27:54,640 同时还继 控制流设置由PHP。 506 00:27:54,640 --> 00:27:58,480 >> 所以我只是要 通过这个快走 507 00:27:58,480 --> 00:28:01,740 因为它是一个很大的相同 概念,我们之前做的事情。 508 00:28:01,740 --> 00:28:07,280 如果不为空,我们已经得到了, 括号,_GET_GET [“名称”]。 509 00:28:07,280 --> 00:28:08,500 这都是一样的东西。 510 00:28:08,500 --> 00:28:15,430 我们使用的_GET字典, PHP将根据表格的要求, 511 00:28:15,430 --> 00:28:20,720 因为它是的参数 动作,并且该方法是获得。 512 00:28:20,720 --> 00:28:22,110 然后,该结束了。 513 00:28:22,110 --> 00:28:27,420 冒号是一个能指只做到这一点 如果if语句的计算结果为真。 514 00:28:27,420 --> 00:28:29,490 这就像一个大括号。 515 00:28:29,490 --> 00:28:33,320 而事实上,这是一个大括号 在其他语言如Python, 516 00:28:33,320 --> 00:28:37,070 您可能,如果你只是遇到 这样做,对你的最终项目。 517 00:28:37,070 --> 00:28:40,170 >> 然后这条线,你好。 518 00:28:40,170 --> 00:28:41,510 然后,我们已经得到了这个奇怪的事情。 519 00:28:41,510 --> 00:28:43,190 我们有更多的括号内。 520 00:28:43,190 --> 00:28:46,140 有没有HTTP那里 - 或者PHP,对不起。 521 00:28:46,140 --> 00:28:47,250 但有一个等号。 522 00:28:47,250 --> 00:28:50,625 然后我们有一个函数, 用htmlspecialchars(_GEThtmlspecialchars(_GET [“名称”])。 523 00:28:50,625 --> 00:28:54,440 524 00:28:54,440 --> 00:28:58,040 这有点像一个更 高级版本回声。 525 00:28:58,040 --> 00:29:01,450 就像我们已经回应的一种方式 打印出来的东西在PHP。 526 00:29:01,450 --> 00:29:03,890 这是一个函数,是 在PHP中定义 527 00:29:03,890 --> 00:29:08,160 将处理一些更讨厌 字符和字节值 528 00:29:08,160 --> 00:29:09,540 你可以通过它。 529 00:29:09,540 --> 00:29:11,070 它总是最安全的使用。 530 00:29:11,070 --> 00:29:14,930 但是,回声会做的工作 就好了,如果我们不 531 00:29:14,930 --> 00:29:17,620 处理任何事情太讨厌。 532 00:29:17,620 --> 00:29:20,340 >> 所以这具有相同的 基本上效果, 533 00:29:20,340 --> 00:29:26,360 这个东西在这个问题之间 标记是由PHP评估。 534 00:29:26,360 --> 00:29:34,490 用htmlspecialchars返回一个不错的HTML _GET_GET [“名称”],即印刷价值 535 00:29:34,490 --> 00:29:36,010 无论我们输入的形式。 536 00:29:36,010 --> 00:29:40,025 然后它会打个招呼, 逗号空间,然后将该。 537 00:29:40,025 --> 00:29:42,910 之间的整个事情 尖括号 538 00:29:42,910 --> 00:29:47,390 将取代任何 用htmlspecialchars推出。 539 00:29:47,390 --> 00:29:49,390 所以这是基本相似 以我们正在做的。 540 00:29:49,390 --> 00:29:54,760 我们有一个else语句是 世界你好,这是有道理的。 541 00:29:54,760 --> 00:29:58,070 所以,现在,让我们回到我们 代码,看看exactly--哦。 542 00:29:58,070 --> 00:30:02,200 我说存在,这是不 一个事情,我们想做的事。 543 00:30:02,200 --> 00:30:05,370 我们想说的话不是空的。 544 00:30:05,370 --> 00:30:10,020 >> 所以这应该有点 好一点,不为空_GET_GET [“名称”]。 545 00:30:10,020 --> 00:30:12,710 而这大括号 匹配大括号。 546 00:30:12,710 --> 00:30:15,210 现在我们得到我们的大括号内。 547 00:30:15,210 --> 00:30:17,790 回声你好_GET [“名称”]。 548 00:30:17,790 --> 00:30:19,912 让我们来看看这效果更好一点。 549 00:30:19,912 --> 00:30:21,350 我们仍然运行在我们的服务器。 550 00:30:21,350 --> 00:30:23,910 您好杰森。 551 00:30:23,910 --> 00:30:24,780 您好杰森。 552 00:30:24,780 --> 00:30:25,810 和它的工作这一次。 553 00:30:25,810 --> 00:30:29,860 所以这是一个证明 你的确可以 554 00:30:29,860 --> 00:30:35,180 使用大括号,你 熟悉和喜爱在HTML PHP代码。 555 00:30:35,180 --> 00:30:41,100 提供给PHP代码 您在PSET 6-- PSET 6-- 556 00:30:41,100 --> 00:30:44,760 提供了另一种方式 这样做同样的事情。 557 00:30:44,760 --> 00:30:49,220 >> 所以,现在我们有力量。 558 00:30:49,220 --> 00:30:55,740 我们有功能来实现 我们在PSET 6看到的PHP代码 559 00:30:55,740 --> 00:30:57,390 由我们自己,基本上是这样。 560 00:30:57,390 --> 00:31:01,350 在我继续前进,有哪些的 你必须在这一点上的问题? 561 00:31:01,350 --> 00:31:02,066 是[听不清]。 562 00:31:02,066 --> 00:31:06,512 >> 听众:所以在pset6的版本, 当你运行它,有一个空间。 563 00:31:06,512 --> 00:31:09,330 我能看到的空间 后面的逗号。 [听不清]启动 564 00:31:09,330 --> 00:31:10,700 开放的支架。 565 00:31:10,700 --> 00:31:15,420 你怎么把的空间 你写你自己的代码的方法是什么? 566 00:31:15,420 --> 00:31:17,910 >> 演讲嘉宾:这是一个很好的问题。 567 00:31:17,910 --> 00:31:21,650 因此,让我们明白这一点。 568 00:31:21,650 --> 00:31:24,450 所以这是一个非常好的问题 一,我没有考虑。 569 00:31:24,450 --> 00:31:25,950 但是,让我们一起做吧。 570 00:31:25,950 --> 00:31:30,280 >> 所以首先,是什么 我做的回声 571 00:31:30,280 --> 00:31:33,690 当我们刚刚回声 你好,你好输出。 572 00:31:33,690 --> 00:31:41,310 如果我们现在呼应这个获得独立 行,让我们看看会发生什么。 573 00:31:41,310 --> 00:31:43,740 所以我们点击这里。 574 00:31:43,740 --> 00:31:45,220 我们一直在说,喜贾森。 575 00:31:45,220 --> 00:31:48,690 所以,再一次,我们没有这个空间。 576 00:31:48,690 --> 00:31:53,090 >> 那是因为,在 PHP的,当我们有回声, 577 00:31:53,090 --> 00:31:55,820 无论有多少 spaces--不,不是V-- 578 00:31:55,820 --> 00:32:01,770 无论有多少空间,我们投放 这里 - 如果我们现在再重新装了起来, 579 00:32:01,770 --> 00:32:03,010 喜贾森。 580 00:32:03,010 --> 00:32:05,770 是啊,看,所有这些 空间得到了吃掉。 581 00:32:05,770 --> 00:32:08,020 而这件事情, 回声功能一样。 582 00:32:08,020 --> 00:32:11,110 >> 所以要照顾 空间,而这是 583 00:32:11,110 --> 00:32:14,960 的原因之一 你为什么不使用echo 584 00:32:14,960 --> 00:32:18,200 并使用用htmlspecialchars代替。 585 00:32:18,200 --> 00:32:22,140 我很好奇会是什么 如果我们没有这种情况发生 586 00:32:22,140 --> 00:32:26,700 在这里我们封闭在一个字符串的空间。 587 00:32:26,700 --> 00:32:29,720 我真的不知道是什么 当我这样做会出现这种情况。 588 00:32:29,720 --> 00:32:30,790 >> 所以,这是一种方式。 589 00:32:30,790 --> 00:32:32,210 这是要照顾它的一种方式。 590 00:32:32,210 --> 00:32:34,840 如果包裹的空间 一个字符串,则空间 591 00:32:34,840 --> 00:32:36,920 将输出很好地通过回声。 592 00:32:36,920 --> 00:32:41,930 做最安全的事情是 做用htmlspecialchars。 593 00:32:41,930 --> 00:32:43,800 这始终是安全的赌注。 594 00:32:43,800 --> 00:32:47,050 但是,现在我们有办法做到 它的回声,如果有必要的。 595 00:32:47,050 --> 00:32:50,700 并以类似的方式,我们可以 回声新的生产线,所有的排序 596 00:32:50,700 --> 00:32:53,550 东西你熟悉做在PHP。 597 00:32:53,550 --> 00:32:57,460 >> 任何人,什么是更多 问题是其他人都 598 00:32:57,460 --> 00:33:01,090 在这一点上关于PHP? 599 00:33:01,090 --> 00:33:04,620 如果人们出现了一个有点晚, 我很高兴留后一点点 600 00:33:04,620 --> 00:33:06,420 说说一些开始。 601 00:33:06,420 --> 00:33:10,380 而且这也是所有livestreamed, 和存档,这太疯狂了。 602 00:33:10,380 --> 00:33:13,960 >> 无论如何,所以现在让我们做一些 更先进的东西用PHP。 603 00:33:13,960 --> 00:33:18,790 而最早的事情之一,你 被引入到C组的循环。 604 00:33:18,790 --> 00:33:24,060 和PHP拥有更强大的 所谓循环foreach循环。 605 00:33:24,060 --> 00:33:37,940 它看起来像this--每空 为空白,大括号,该做的事。 606 00:33:37,940 --> 00:33:41,500 因此,这基本上是一个简写。 607 00:33:41,500 --> 00:33:45,380 >> 你看,在for循环中一 句法结构 608 00:33:45,380 --> 00:33:50,590 被设计在C和汇编 语言之类的东西。 609 00:33:50,590 --> 00:33:56,300 设计出C,准确的说,作为一个速记 对于很多循环的类型的 610 00:33:56,300 --> 00:33:57,750 人们会看到的。 611 00:33:57,750 --> 00:34:01,230 当你写一个循环,有没有像 常常是一个初始化步骤 612 00:34:01,230 --> 00:34:04,700 一开始,右执行 调节在环路将stop-- 613 00:34:04,700 --> 00:34:07,030 这就是功能 这只是在一个while循环, 614 00:34:07,030 --> 00:34:10,040 或者说一段时间恰有 只是feature--然后 615 00:34:10,040 --> 00:34:12,320 一个增量步骤在末端。 616 00:34:12,320 --> 00:34:16,489 所以你会经常发现自己 编写代码如下所示。 617 00:34:16,489 --> 00:34:19,780 我要删除一些这方面的。 618 00:34:19,780 --> 00:34:23,850 >> 但是,如果我们迭代通过 以阵列的字符, 619 00:34:23,850 --> 00:34:26,960 举例来说,像我们已经 得到的字符阵列。 620 00:34:26,960 --> 00:34:29,400 对不起带回C.我知道, 你以为你做了。 621 00:34:29,400 --> 00:34:31,900 但是,这只是为目的 学习PHP的,我保证。 622 00:34:31,900 --> 00:34:38,880 所以,如果你有一个char海峡 长度为8,让我们 623 00:34:38,880 --> 00:34:46,760 说这说Hellooo 后面有个空。 624 00:34:46,760 --> 00:34:48,270 太好了,所以这是我们的字符串。 625 00:34:48,270 --> 00:34:51,469 >> 然后我们有一个for循环。 626 00:34:51,469 --> 00:34:53,730 我们是int i等于0。 627 00:34:53,730 --> 00:34:57,960 628 00:34:57,960 --> 00:35:09,110 我们想退出str的时候 我等于不等于空, 629 00:35:09,110 --> 00:35:11,590 因为我们退出的时候它等于空。 630 00:35:11,590 --> 00:35:19,170 然后我们做我++在每 点在for循环。 631 00:35:19,170 --> 00:35:30,480 做一些与我海峡。 632 00:35:30,480 --> 00:35:34,950 >> 因此,基本公式是, 我们有这个数组,我们 633 00:35:34,950 --> 00:35:37,910 想当作单独的元素。 634 00:35:37,910 --> 00:35:45,170 但是,我们必须做的是,我们不得不 基本上创建一个单独的整数 635 00:35:45,170 --> 00:35:50,530 变量是计数每 一次,我们通过循环去了。 636 00:35:50,530 --> 00:35:55,240 然后,我们就必须再调用 的strstr [我]当我们真正想做的事 637 00:35:55,240 --> 00:35:57,280 刚去的性格 按字符,对不对? 638 00:35:57,280 --> 00:36:00,185 我们不希望增加的 整数,然后使用该整数 639 00:36:00,185 --> 00:36:02,780 访问每一个字符。 640 00:36:02,780 --> 00:36:04,410 我们真正想要的字符一个字符。 641 00:36:04,410 --> 00:36:08,600 >> 所以,每个智能 计算,对我们来说。 642 00:36:08,600 --> 00:36:11,875 如果我们有一个数组,其中 我们可以在PHP声明 643 00:36:11,875 --> 00:36:15,900 作为just--如果我们有一个变量 所谓的,让我们称之为数组。 644 00:36:15,900 --> 00:36:19,840 不用打字的奇迹,这是 就像任何其他变量。 645 00:36:19,840 --> 00:36:20,730 这只是一个数组。 646 00:36:20,730 --> 00:36:26,890 我们有一点点[听不清]像1, 2,3,只是一种初始化数组。 647 00:36:26,890 --> 00:36:29,680 这是确定的,它不喜欢我的foreach。 648 00:36:29,680 --> 00:36:33,120 >> 但是,如果我们foreach--实际上 我输入了一个有点不对劲。 649 00:36:33,120 --> 00:36:34,840 有两种方法可以做到foreach循环。 650 00:36:34,840 --> 00:36:37,400 还有的在语法和作为语法。 651 00:36:37,400 --> 00:36:40,580 而我们要做的 首先在语法,还不如。 652 00:36:40,580 --> 00:36:41,780 这是我的错误。 653 00:36:41,780 --> 00:36:53,785 >> 在阵列所以的foreach NUM,回声NUM。 654 00:36:53,785 --> 00:36:56,970 655 00:36:56,970 --> 00:36:59,500 而PHP吼 我出于某种原因。 656 00:36:59,500 --> 00:37:03,520 它的发现一个意想不到的 在东西, 657 00:37:03,520 --> 00:37:05,820 这是一个麻烦一点点。 658 00:37:05,820 --> 00:37:09,105 但是,我们会找出 这是为什么在某一时刻。 659 00:37:09,105 --> 00:37:11,960 660 00:37:11,960 --> 00:37:13,610 所以不喜欢这样。 661 00:37:13,610 --> 00:37:15,040 让我们尝试使用的。 662 00:37:15,040 --> 00:37:17,310 它更喜欢的语法似乎。 663 00:37:17,310 --> 00:37:22,550 因此,让我们做的foreach阵列为num。 664 00:37:22,550 --> 00:37:24,520 >> 那么一点点的解释 对刚刚发生了什么 665 00:37:24,520 --> 00:37:30,670 是因为语法saying--那么首先, 让我们来看看这是什么打印出来。 666 00:37:30,670 --> 00:37:32,260 因此,我们打开我们的IDE。 667 00:37:32,260 --> 00:37:33,110 我们去这里。 668 00:37:33,110 --> 00:37:35,845 我们说,你好杰森。 669 00:37:35,845 --> 00:37:41,390 它做到了123,这是内容 我们创建了上面的数组。 670 00:37:41,390 --> 00:37:45,500 >> 因此,在深入这个foreach循环, 我们有一个可变称为阵列 671 00:37:45,500 --> 00:37:47,470 这是三个数的阵列。 672 00:37:47,470 --> 00:37:52,120 然后,我们正在做的foreach 阵列为num,回声NUM。 673 00:37:52,120 --> 00:37:54,990 而这更 直观的比对LOP。 674 00:37:54,990 --> 00:38:02,380 我们说,对待每一个 事情的数组NUM中, 675 00:38:02,380 --> 00:38:05,180 我要你给我的NUM。 676 00:38:05,180 --> 00:38:06,640 而这也正是它在做什么。 677 00:38:06,640 --> 00:38:12,000 >> PHP是计算的 当你说的foreach阵列, 678 00:38:12,000 --> 00:38:16,080 而你处理的是一个数组,什么 你将要遍历 679 00:38:16,080 --> 00:38:19,950 是在该阵列中的字符, 在该数组的整数, 680 00:38:19,950 --> 00:38:21,920 是在该数组中的元素。 681 00:38:21,920 --> 00:38:26,110 而且它让你存储 这些变量为num, 682 00:38:26,110 --> 00:38:29,360 然后只输出NUM 马上而不是说, 683 00:38:29,360 --> 00:38:34,090 我有一个叫我的变量, 那么我想输出的strstr [1]。 684 00:38:34,090 --> 00:38:39,130 >> 所以,让我们做很酷的事情。 685 00:38:39,130 --> 00:38:43,330 基本上一样,我们没有创造 这些变量像我的,并尽一切 686 00:38:43,330 --> 00:38:45,090 这个增量的东西在最后。 687 00:38:45,090 --> 00:38:48,290 PHP需要照顾所有这一切为您。 688 00:38:48,290 --> 00:38:54,470 >> 所以,现在让我们来谈谈的foreach作为 它适用于我们_GET字典。 689 00:38:54,470 --> 00:38:57,170 因此,我们将快速地注释了这一点。 690 00:38:57,170 --> 00:39:02,030 因此,我们有我们的_GET数组。 691 00:39:02,030 --> 00:39:04,361 我们有这个变量。 692 00:39:04,361 --> 00:39:05,610 而且它有它的一些东西。 693 00:39:05,610 --> 00:39:10,275 >> 现在,我们只有一个变量 被传递到它,这是名称。 694 00:39:10,275 --> 00:39:13,420 但是,如果我们按Enter键,现在 我们可以有两个变量。 695 00:39:13,420 --> 00:39:17,910 我们可以有姓名和年龄,例如, 如果我们想获得的年龄,也 696 00:39:17,910 --> 00:39:20,960 一个人的名字,有趣的是。 697 00:39:20,960 --> 00:39:25,690 >> 所以,现在_GET将是一个 字典中有两个元素, 698 00:39:25,690 --> 00:39:27,980 有两个关键值对。 699 00:39:27,980 --> 00:39:33,490 而第一key--我要去 写这篇文章一上来就板了。 700 00:39:33,490 --> 00:39:37,136 我们有我们的字典是_GET。 701 00:39:37,136 --> 00:39:39,520 对不起,这是一个有点难以看到。 702 00:39:39,520 --> 00:39:46,690 但是我们的字典里面,我们有 名字,这将是什么 703 00:39:46,690 --> 00:39:47,680 我们正在给定的。 704 00:39:47,680 --> 00:39:53,040 我们将有年龄,这也是 将是我们正在思考的东西。 705 00:39:53,040 --> 00:39:56,020 这就是整体 我们的字典中。 706 00:39:56,020 --> 00:39:57,730 >> 所以它有它的两个元素。 707 00:39:57,730 --> 00:40:01,310 所以,因为的foreach 循环是聪明的,我们 708 00:40:01,310 --> 00:40:04,900 可能会认为,正确 可能会认为的foreach 709 00:40:04,900 --> 00:40:08,080 可以通过这个迭代 字典,打印出 710 00:40:08,080 --> 00:40:10,850 给出姓名和年龄的值。 711 00:40:10,850 --> 00:40:14,510 >> 因此,让我们其实做到这一点。 712 00:40:14,510 --> 00:40:17,520 让我们构造一个foreach循环。 713 00:40:17,520 --> 00:40:23,351 而我们要做的_GET的。 714 00:40:23,351 --> 00:40:24,850 而我们要做到以下几点。 715 00:40:24,850 --> 00:40:34,186 因此,让我们看看如果我们输入会发生什么 只是字,然后说回声字。 716 00:40:34,186 --> 00:40:40,540 我们也将呼应新行 这只是为了更清晰一点, 717 00:40:40,540 --> 00:40:41,260 这是怎么回事。 718 00:40:41,260 --> 00:40:42,890 >> 所以,让我们来看看。 719 00:40:42,890 --> 00:40:44,390 它没有给我任何错误。 720 00:40:44,390 --> 00:40:46,810 我们将关闭此。 721 00:40:46,810 --> 00:40:51,020 在我们的网站,你会做 很多,超过pset7的过程。 722 00:40:51,020 --> 00:40:53,890 所以我们说我的名字叫萨姆。 723 00:40:53,890 --> 00:40:58,560 我的年龄是45。 724 00:40:58,560 --> 00:41:01,060 不是。 725 00:41:01,060 --> 00:41:05,640 但它打印出来,符合市场预期,萨姆45。 726 00:41:05,640 --> 00:41:08,930 >> 所以你会发现, 什么foreach循环在这里did--, 727 00:41:08,930 --> 00:41:12,360 让我们回到那个,所以它的 在board--我们得到_GET的字。 728 00:41:12,360 --> 00:41:15,130 并有四样东西在_GET。 729 00:41:15,130 --> 00:41:17,410 但只打印出两件事情。 730 00:41:17,410 --> 00:41:21,290 的foreach,是其智能的自我, 假设我们真正想要的 731 00:41:21,290 --> 00:41:24,100 是数值,而不是键。 732 00:41:24,100 --> 00:41:27,800 >> 但有一种方式,我们可以打印 出键为好,如果我们想。 733 00:41:27,800 --> 00:41:30,810 如果我们想也知道是什么 这些变量被称为, 734 00:41:30,810 --> 00:41:33,540 有一个办法,我们 可以访问这一点。 735 00:41:33,540 --> 00:41:36,840 而方式排序做到这一点, 所以我们可以说,让我们真正 736 00:41:36,840 --> 00:41:39,485 它拆分成键值对。 737 00:41:39,485 --> 00:41:42,370 738 00:41:42,370 --> 00:41:47,580 让我们看看现在发生了什么。 739 00:41:47,580 --> 00:41:50,550 >> 因此,我们有钥匙。 740 00:41:50,550 --> 00:41:52,290 我们的价值。 741 00:41:52,290 --> 00:41:56,650 我们有另一个新 行以提高可读性。 742 00:41:56,650 --> 00:42:00,540 让我们看看会发生什么 当我们这样做了。 743 00:42:00,540 --> 00:42:04,950 744 00:42:04,950 --> 00:42:06,720 我不知道贾森有多老。 745 00:42:06,720 --> 00:42:09,180 Jason的15。 746 00:42:09,180 --> 00:42:11,650 因此,我们有名字杰森,15岁。 747 00:42:11,650 --> 00:42:15,830 所以我们能够访问该键 和值对本词典 748 00:42:15,830 --> 00:42:18,590 刚才说的关键点值。 749 00:42:18,590 --> 00:42:23,350 这就是一个foreach语法 糖位,使 750 00:42:23,350 --> 00:42:25,960 您访问在字典中的东西。 751 00:42:25,960 --> 00:42:31,190 >> 因此,希望这种强调 foreach循环的力量。 752 00:42:31,190 --> 00:42:35,690 你几乎可以扔 事情,似乎可迭代的, 753 00:42:35,690 --> 00:42:38,922 像什么,有多个 像数组中的元素, 754 00:42:38,922 --> 00:42:41,880 像dictionary--这是两个 你将要使用的主要的事情 755 00:42:41,880 --> 00:42:45,630 无论是在生活和PSET 7。 756 00:42:45,630 --> 00:42:49,350 所以,你可以扔的东西 它,它会找出 757 00:42:49,350 --> 00:42:51,030 你想用它做什么。 758 00:42:51,030 --> 00:42:54,250 它会说,好吧,我会得到 这些东西从数据 759 00:42:54,250 --> 00:42:55,680 传递给我。 760 00:42:55,680 --> 00:43:02,470 而这,你是什么 要在PSET 7使用了很多。 761 00:43:02,470 --> 00:43:08,550 >> 我要快速滚动 下来正好看到我在哪里。 762 00:43:08,550 --> 00:43:11,410 763 00:43:11,410 --> 00:43:13,070 人们是否有在这一点上的问题? 764 00:43:13,070 --> 00:43:13,778 在所有的问题吗? 765 00:43:13,778 --> 00:43:14,400 是? 766 00:43:14,400 --> 00:43:18,320 >> 听众:所以与键和值, 你能说出它什么都重要 767 00:43:18,320 --> 00:43:20,507 它仍然工作? 768 00:43:20,507 --> 00:43:21,090 演讲嘉宾:哎呀。 769 00:43:21,090 --> 00:43:22,820 哇,我完全删除整条生产线。 770 00:43:22,820 --> 00:43:23,380 做得好。 771 00:43:23,380 --> 00:43:26,502 所以,一个。 772 00:43:26,502 --> 00:43:30,109 键和值仅仅是一个惯例。 773 00:43:30,109 --> 00:43:30,650 这是有帮助的。 774 00:43:30,650 --> 00:43:34,010 你会得到一些设计 点,也许有些造型加分 775 00:43:34,010 --> 00:43:36,970 这样做,因为这 真正传达的意图。 776 00:43:36,970 --> 00:43:39,650 但是,我们说和y​​arp。 777 00:43:39,650 --> 00:43:42,476 >> 听众:你不必 在HTML文件中改变什么 778 00:43:42,476 --> 00:43:43,607 为了反映? 779 00:43:43,607 --> 00:43:44,440 演讲嘉宾:不是。 780 00:43:44,440 --> 00:43:47,260 听众:它只是知道 因为等于更大的than-- 781 00:43:47,260 --> 00:43:47,801 演讲嘉宾:是的。 782 00:43:47,801 --> 00:43:49,489 听众:那that's-- --that指标 783 00:43:49,489 --> 00:43:50,030 演讲嘉宾:是的。 784 00:43:50,030 --> 00:43:52,260 这是一个foreach语法,惟命是从。 785 00:43:52,260 --> 00:43:53,720 >> 听众:有没有类型。 786 00:43:53,720 --> 00:43:57,230 所以,如果你想要的是什么 年龄只是一个数字? 787 00:43:57,230 --> 00:43:59,510 有没有办法做到这一点? 788 00:43:59,510 --> 00:44:04,550 >> 演讲嘉宾:有办法检查 变量符合一定的类型。 789 00:44:04,550 --> 00:44:08,482 所以PHP请求从多一点 你因为没有类型研究。 790 00:44:08,482 --> 00:44:09,440 某些方面,它要求较少。 791 00:44:09,440 --> 00:44:11,070 在某些方面,它要求更多。 792 00:44:11,070 --> 00:44:13,320 因为如果你刚 东西在变, 793 00:44:13,320 --> 00:44:14,960 你不知道它是什么类型。 794 00:44:14,960 --> 00:44:19,310 但是,如果你是聪明的变量 您分配类型,并确保 795 00:44:19,310 --> 00:44:22,750 该功能仅re​​turn--您 要功能只返回 796 00:44:22,750 --> 00:44:26,210 一种类型的值,以便 你基本上可以 797 00:44:26,210 --> 00:44:31,090 预计该变量你回来 从函数将是类型 798 00:44:31,090 --> 00:44:32,780 你觉得会,基本上是这样。 799 00:44:32,780 --> 00:44:36,550 >> 但也有一些方法 通过它,你可以检查。 800 00:44:36,550 --> 00:44:39,801 我不记得他们 从我的头顶。 801 00:44:39,801 --> 00:44:43,300 我等着它变成蓝色。 802 00:44:43,300 --> 00:44:45,560 isint? 803 00:44:45,560 --> 00:44:48,070 ISSTR? 804 00:44:48,070 --> 00:44:52,000 有方法 内置入PHP可以 805 00:44:52,000 --> 00:44:54,440 检查你的变量的类型。 806 00:44:54,440 --> 00:44:58,250 但是,如果您分配变量 聪明,你不应该 807 00:44:58,250 --> 00:45:01,330 要做到这一点太多PSET 7。 808 00:45:01,330 --> 00:45:02,780 但这些方法确实存在。 809 00:45:02,780 --> 00:45:06,704 而这件事情, 在语言本身。 810 00:45:06,704 --> 00:45:08,370 我不记得确切的语法。 811 00:45:08,370 --> 00:45:09,930 我们甚至可以查找。 812 00:45:09,930 --> 00:45:11,974 但是,时间是至关重要的。 813 00:45:11,974 --> 00:45:13,890 有没有任何其他人 有什么问题吗? 814 00:45:13,890 --> 00:45:14,660 是。 815 00:45:14,660 --> 00:45:15,951 >> 听众:我只有一个了。 816 00:45:15,951 --> 00:45:19,050 所以你提到的GET方法,但 你没有提到的POST方法。 817 00:45:19,050 --> 00:45:20,500 难道我们回来了吗? 818 00:45:20,500 --> 00:45:21,540 >> 演讲嘉宾:是的,我们将 可回来了。 819 00:45:21,540 --> 00:45:24,840 这正是我一直在寻找 在我的电话,现在睡着了, 820 00:45:24,840 --> 00:45:26,960 但我会找到的。 821 00:45:26,960 --> 00:45:30,680 只是确保我们打 所有的PHP笔记。 822 00:45:30,680 --> 00:45:35,640 是的,没有调试版本。 823 00:45:35,640 --> 00:45:41,940 是的,我们有一些更多的东西, 我们现在要做到这一点。 824 00:45:41,940 --> 00:45:45,980 >> 因此,谈到POST, 你所提到的, 825 00:45:45,980 --> 00:45:49,630 唯一的区别 之间的GET和POST是 826 00:45:49,630 --> 00:45:53,150 该记得,当我们看着 在此URL,我们看到,哦, 827 00:45:53,150 --> 00:45:58,270 名等于和年龄等于yarp 是正确的网址为我们那里。 828 00:45:58,270 --> 00:46:03,300 POST是多了几分神秘的 其传递的信息。 829 00:46:03,300 --> 00:46:08,090 >> 所以,如果你不想用户 要知道,比如说你 830 00:46:08,090 --> 00:46:11,160 不想用户名 和该人的口令 831 00:46:11,160 --> 00:46:15,080 当前登录到显示在 的URL,这是一个合理的事 832 00:46:15,080 --> 00:46:17,770 到不希望在URL, 因为对方能看到它。 833 00:46:17,770 --> 00:46:21,520 如果有人链接到一个网页,你 不希望自己的网址贴满了那里, 834 00:46:21,520 --> 00:46:27,850 因为这将让人们登录 只是一个URL的粘贴,而不是 835 00:46:27,850 --> 00:46:29,670 实际上填写表格。 836 00:46:29,670 --> 00:46:31,710 POST是有点更隐秘。 837 00:46:31,710 --> 00:46:34,150 >> 而唯一的东西, 我们必须改变 838 00:46:34,150 --> 00:46:38,550 此方法,改变 从得到张贴。 839 00:46:38,550 --> 00:46:42,367 然后在HTTP里面,而不是 访问阵列_GET的, 840 00:46:42,367 --> 00:46:43,950 我们要访问阵列_POST。 841 00:46:43,950 --> 00:46:48,600 >> 我们会发现,如果 我们打​​开这再度回升, 842 00:46:48,600 --> 00:46:51,910 杰森缓慢下降的年龄。 843 00:46:51,910 --> 00:46:53,230 杰森的名字,14岁。 844 00:46:53,230 --> 00:46:54,280 同样的东西弹出。 845 00:46:54,280 --> 00:46:57,190 但我们去的网址, 这些变量不存在。 846 00:46:57,190 --> 00:47:00,540 >> 而方式POST passes--所以要记住 847 00:47:00,540 --> 00:47:02,750 如何看待一个页面的源代码。 848 00:47:02,750 --> 00:47:04,570 我们去到网络。 849 00:47:04,570 --> 00:47:06,920 我们刷新。 850 00:47:06,920 --> 00:47:10,690 这是另一件事, POST将要给大家介绍的警告。 851 00:47:10,690 --> 00:47:15,050 你可能已经看到了一个箱子,一个文本 盒这样的浏览器。 852 00:47:15,050 --> 00:47:18,170 你确定你想 再次发送的一种形式? 853 00:47:18,170 --> 00:47:21,170 POST是的发送这些表格。 854 00:47:21,170 --> 00:47:24,680 >> 因为基本上,如果你发送的 信用卡信息的人, 855 00:47:24,680 --> 00:47:26,350 这不是要显示在URL。 856 00:47:26,350 --> 00:47:28,180 这将是一个POST请求。 857 00:47:28,180 --> 00:47:32,905 所以,当你刷新页面, 它重新发送POST请求。 858 00:47:32,905 --> 00:47:35,530 所以,现在我们确实想发送 再次形成,因为它不会 859 00:47:35,530 --> 00:47:37,340 创建任何重复购买。 860 00:47:37,340 --> 00:47:41,160 >> 我们会发现,到这里, 我们使用的方法是POST。 861 00:47:41,160 --> 00:47:43,065 它确实传输字节。 862 00:47:43,065 --> 00:47:45,460 它转移其中的401。 863 00:47:45,460 --> 00:47:47,190 计划漂亮的渺小。 864 00:47:47,190 --> 00:47:51,600 但是,没有什么地方,我们可以看到 正在传递的值。 865 00:47:51,600 --> 00:47:59,540 该网页本身可以看出, 但我们作为用户不能够看到, 866 00:47:59,540 --> 00:48:01,650 除非你是一个黑客。 867 00:48:01,650 --> 00:48:05,340 如果你是一个优秀的黑客,你可以看看。 868 00:48:05,340 --> 00:48:09,360 >> 如果你知道基本 在HTML格式, 869 00:48:09,360 --> 00:48:11,790 该值将 自己在页面知。 870 00:48:11,790 --> 00:48:13,160 你就可以看到。 871 00:48:13,160 --> 00:48:16,720 该值将在那里,他们是 只是一个小的你不太明显 872 00:48:16,720 --> 00:48:19,522 访问,基本上是这样。 873 00:48:19,522 --> 00:48:23,620 >> 我们有更多的 有关GET,POST问题 874 00:48:23,620 --> 00:48:26,800 before--就是我们接下来要做 实际上是看一些代码 875 00:48:26,800 --> 00:48:30,837 那你给pset中7,说说 它如何使用这些概念, 876 00:48:30,837 --> 00:48:32,670 而谈 东西,你会 877 00:48:32,670 --> 00:48:35,090 有做的pset 7一点点。 878 00:48:35,090 --> 00:48:36,760 在此之前,还有什么问题吗? 879 00:48:36,760 --> 00:48:38,047 你们更多的问题有哪些? 880 00:48:38,047 --> 00:48:41,250 881 00:48:41,250 --> 00:48:41,840 大。 882 00:48:41,840 --> 00:48:45,370 >> 好吧,让我们来看看 在PSET 7一点点, 883 00:48:45,370 --> 00:48:49,530 毫无疑问,你是什么 所有最激动的。 884 00:48:49,530 --> 00:48:52,126 885 00:48:52,126 --> 00:48:54,750 我的意思是,这是一件 大卫经过一点点。 886 00:48:54,750 --> 00:49:00,890 但是,我们必须在三个目录 顶部,以及一个配置文件。 887 00:49:00,890 --> 00:49:04,650 这对数据库,我们将 在大约五分钟谈。 888 00:49:04,650 --> 00:49:07,220 包括,你永远需要 看此目录中 889 00:49:07,220 --> 00:49:12,480 如果你不想,但它是很好的 知道有各种各样的帮手。 890 00:49:12,480 --> 00:49:14,210 助手就像是有帮助的功能。 891 00:49:14,210 --> 00:49:18,120 然后我们有配置, 其中设置一些东西了。 892 00:49:18,120 --> 00:49:24,590 >> 有一些功能CS50具有 撰文指出,在助手和配置。 893 00:49:24,590 --> 00:49:27,250 而一些PHP的那 已经存在的文件 894 00:49:27,250 --> 00:49:30,880 会做很多更几分 为您的钝专家组的工作。 895 00:49:30,880 --> 00:49:35,250 就像如果我们进入公众 的login.php,这是什么 896 00:49:35,250 --> 00:49:38,350 显示了权当你进入PSET 7。 897 00:49:38,350 --> 00:49:40,580 我们会看到有 这需要声明。 898 00:49:40,580 --> 00:49:43,420 这有点像 犀利包括,包括hashtag 899 00:49:43,420 --> 00:49:46,850 包括如果你是一个新的一代。 900 00:49:46,850 --> 00:49:49,740 但是,这基本上 说我需要访问 901 00:49:49,740 --> 00:49:52,260 要在config.php所有功能。 902 00:49:52,260 --> 00:49:55,290 你可以有一个要求 对于各种各样的其他东西。 903 00:49:55,290 --> 00:49:59,670 >> 配置实际上需要帮手。 904 00:49:59,670 --> 00:50:02,490 所以每当你需要 配置,你也 905 00:50:02,490 --> 00:50:05,660 其中,也不需要助手为好。 906 00:50:05,660 --> 00:50:09,590 这样,您可以访问所有的 很酷的功能,我们要使用, 907 00:50:09,590 --> 00:50:10,420 事情喜欢渲染。 908 00:50:10,420 --> 00:50:13,490 实际上,我来缓解 下来一点点。 909 00:50:13,490 --> 00:50:16,280 所以,函数,那么我们是 要穿行 910 00:50:16,280 --> 00:50:22,380 就在我们移动到SQL一点 位是login.php中的功能,只是 911 00:50:22,380 --> 00:50:26,586 因为它使用的一些话题 我们刚才谈到了PHP。 912 00:50:26,586 --> 00:50:30,840 >> 你看到的第一件事情是,如果$ _ SERVER。 913 00:50:30,840 --> 00:50:34,500 这又是一个全局变量, 你将要处理。 914 00:50:34,500 --> 00:50:38,460 这就像_GET和_POST,但什么 服务器包含在这可以让你 915 00:50:38,460 --> 00:50:42,730 知道如果请求方法 是一个GET或POST的。 916 00:50:42,730 --> 00:50:47,250 就像以前我们在做什么 就在我们的代码,我们写的, 917 00:50:47,250 --> 00:50:51,880 我们只是改变它是GET和 POST取决于什么HTML有。 918 00:50:51,880 --> 00:50:55,120 但也有可能的页面 与这两种类型的请求访问。 919 00:50:55,120 --> 00:50:57,410 你可能想要做的 根据不同的事情 920 00:50:57,410 --> 00:50:59,740 上的请求的类型, 就像登录一样。 921 00:50:59,740 --> 00:51:04,400 >> 所以,你可以检查的要求 通过访问密钥的方法, 922 00:51:04,400 --> 00:51:08,630 通过使用键和获取 东西在字典中的价值 923 00:51:08,630 --> 00:51:10,260 _服务器。 924 00:51:10,260 --> 00:51:13,800 所以这是另一次全球 变像_GET和_POST。 925 00:51:13,800 --> 00:51:16,990 >> 如果我们得到,我们要 呈现登录表单。 926 00:51:16,990 --> 00:51:21,920 渲染是一个函数,基本上 刚搭设相应的HTML 927 00:51:21,920 --> 00:51:24,500 并将其传递一些参数。 928 00:51:24,500 --> 00:51:28,740 这个称号是一个参数,它是 在显示,奇怪的是使用, 929 00:51:28,740 --> 00:51:32,670 网页中的标题 问题的东西在这里, 930 00:51:32,670 --> 00:51:34,850 说还是招呼我们上面的例子。 931 00:51:34,850 --> 00:51:36,100 现在我们有一个不同的东西。 932 00:51:36,100 --> 00:51:38,570 否则,如果它的文章中,我们 做一些其他的东西。 933 00:51:38,570 --> 00:51:40,790 我们使用的空方法。 934 00:51:40,790 --> 00:51:42,750 它是不存在的,它是空的。 935 00:51:42,750 --> 00:51:45,440 而且我们看到之前,PHP 有建相当数量的 936 00:51:45,440 --> 00:51:52,370 在方法大卫will--如果有 是那些对你有用的方法, 937 00:51:52,370 --> 00:51:55,560 他们会提醒你 通过大卫走 938 00:51:55,560 --> 00:51:59,770 给出一开始概述, 也Zamyla的有益位。 939 00:51:59,770 --> 00:52:01,040 她回来了每一个人。 940 00:52:01,040 --> 00:52:03,100 我们都感到欢欣鼓舞。 941 00:52:03,100 --> 00:52:06,530 道歉是适当命名的功能 这基本上只是打印出 942 00:52:06,530 --> 00:52:10,130 一些错误消息, 因为CS50很有礼貌。 943 00:52:10,130 --> 00:52:14,770 >> 而现在这个,这是一个 因为这有点棘手 944 00:52:14,770 --> 00:52:16,697 在这里我们要查询数据库。 945 00:52:16,697 --> 00:52:18,280 现在,我们还没有谈到数据库。 946 00:52:18,280 --> 00:52:22,220 而我们将在接下来的 五分钟左右,最大。 947 00:52:22,220 --> 00:52:24,980 但是,这是一个函数 这CS50写 948 00:52:24,980 --> 00:52:38,050 从数据库获取表基本 我们正在pset中7个有。 949 00:52:38,050 --> 00:52:40,860 我真的很糟糕我 零索引今天。 950 00:52:40,860 --> 00:52:42,060 但是,是的,这是7。 951 00:52:42,060 --> 00:52:46,340 >> 因此,查询它会返回一个 阵列,主要是键位。 952 00:52:46,340 --> 00:52:54,130 而且因为这些东西没有 打字,所以行是一个数组的数组。 953 00:52:54,130 --> 00:52:59,480 因为当我们正在考虑 一个表,我们将做什么 954 00:52:59,480 --> 00:53:04,830 是,当你在pset中了解到 喜欢游戏的15,反正 955 00:53:04,830 --> 00:53:06,990 在这里你不得不使用 双阵列,我们基本上 956 00:53:06,990 --> 00:53:15,210 还有其他的数组 阵列来生成表。 957 00:53:15,210 --> 00:53:18,150 而且你有行和列。 958 00:53:18,150 --> 00:53:24,450 然后你就可以访问它们像 [0] [1],你得到的[0] [1]。 959 00:53:24,450 --> 00:53:26,900 基本的东西一样。 960 00:53:26,900 --> 00:53:29,380 >> 所以,我们在做什么 这里在此功能, 961 00:53:29,380 --> 00:53:35,070 我们要求数据库 如果用户那 962 00:53:35,070 --> 00:53:40,200 试图登录,这将是 通过POST方法发送。 963 00:53:40,200 --> 00:53:43,950 我们会看到我们得到 用户名从彦博。 964 00:53:43,950 --> 00:53:46,900 他们将有发送,用户 或者你会送一个价值 965 00:53:46,900 --> 00:53:50,750 穿过POST一个形式,因为 它的用户名和密码的东西。 966 00:53:50,750 --> 00:53:54,830 我们正在检查用户名 看,这是在表中? 967 00:53:54,830 --> 00:53:58,070 因为,如果用户正在记录 在,那么他们的用户名 968 00:53:58,070 --> 00:54:03,320 应存储在的表 存在此网站的用户。 969 00:54:03,320 --> 00:54:09,360 所以基本上,如果 用户是在数据库中, 970 00:54:09,360 --> 00:54:16,400 查询是否会返回 该行,这是一个数组。 971 00:54:16,400 --> 00:54:24,560 >> 但棘手的问题是,如果即使 双阵列只有一行, 972 00:54:24,560 --> 00:54:31,900 即使它是一个行array-- 就像你有basically-- 973 00:54:31,900 --> 00:54:36,900 如果你有一个大小为一数组 这是抱着另一个数组, 974 00:54:36,900 --> 00:54:38,940 你真的处理的一列。 975 00:54:38,940 --> 00:54:41,420 但它仍然是处理 就像一个双阵列。 976 00:54:41,420 --> 00:54:44,560 >> 而这正是它有时可以得到 棘手的,因为现在我们得到的行。 977 00:54:44,560 --> 00:54:46,440 我们的变量行。 978 00:54:46,440 --> 00:54:48,590 然后我们要创建 一个新的变量叫做行 979 00:54:48,590 --> 00:54:51,450 并将其设置等于 行的第一行。 980 00:54:51,450 --> 00:54:55,150 而且你会发现,意见 说,这是第一个也是唯一的行。 981 00:54:55,150 --> 00:54:57,080 >> 因此,这是很棘手 部分在哪里,现在功能 982 00:54:57,080 --> 00:54:59,660 可以返回数组非常容易。 983 00:54:59,660 --> 00:55:01,270 这里没有mallocs。 984 00:55:01,270 --> 00:55:02,280 你不会看到mallocs。 985 00:55:02,280 --> 00:55:03,940 所以你不会看到赛格故障。 986 00:55:03,940 --> 00:55:08,380 但是功能仍然会通过 围绕阵列和数据分组。 987 00:55:08,380 --> 00:55:12,250 而且你必须要警惕的是什么 正是你的函数将返回。 988 00:55:12,250 --> 00:55:15,160 即使它的One 类似这样的专栏,查询 989 00:55:15,160 --> 00:55:17,520 仍然会返回一个双阵列。 990 00:55:17,520 --> 00:55:21,390 因此,要访问该column--或者您 能想到这一切作为倒 991 00:55:21,390 --> 00:55:22,870 因为我们正在谈论的行。 992 00:55:22,870 --> 00:55:26,810 但访问一行, 你不能只是说行。 993 00:55:26,810 --> 00:55:31,540 即使是一排,你必须 样的不rowsrows [0]来消除这种 994 00:55:31,540 --> 00:55:37,360 阵列的外位和 刚才你一行。 995 00:55:37,360 --> 00:55:38,342 >> 做一些其他的事情。 996 00:55:38,342 --> 00:55:40,050 有一个函数 所谓password_verify 997 00:55:40,050 --> 00:55:42,980 这验证 密码被张贴。 998 00:55:42,980 --> 00:55:48,500 然后,我们看到另一个全球 可变这里,_SESSION。 999 00:55:48,500 --> 00:55:51,340 基本会话ID 你是怎么保持跟踪 1000 00:55:51,340 --> 00:55:53,990 如果有人登录与否。 1001 00:55:53,990 --> 00:55:58,590 所以现在用的login.php, 我们正在登录的用户。 1002 00:55:58,590 --> 00:56:01,920 所以我们想要做的是我们要 说会话ID是等于行 1003 00:56:01,920 --> 00:56:05,890 ID,这很有道理,因为 每一行都会有不同的ID 1004 00:56:05,890 --> 00:56:07,239 号作为表的一部分。 1005 00:56:07,239 --> 00:56:09,280 我们将进入SQL中 第二,因此,如果任何的这 1006 00:56:09,280 --> 00:56:13,500 似乎是胡说一点点, 那么一切都将被清除了。 1007 00:56:13,500 --> 00:56:18,450 但是,我们要设置id等于 正确的事情,登录用户。 1008 00:56:18,450 --> 00:56:20,530 很抱歉,如果有什么差错。 1009 00:56:20,530 --> 00:56:27,600 这是在登录的目的 生活马兰教授会说。 1010 00:56:27,600 --> 00:56:29,130 >> 所以这是的login.php。 1011 00:56:29,130 --> 00:56:33,750 和很多你写的PHP代码 在PSET 7,他们会一点点。 1012 00:56:33,750 --> 00:56:36,470 不要忘记chmod命令 适当的权限。 1013 00:56:36,470 --> 00:56:40,180 将有大约一点点 在规格中的开头。 1014 00:56:40,180 --> 00:56:46,382 >> 但是,你的PHP 写入将是 1015 00:56:46,382 --> 00:56:47,840 做的东西,这与此类似。 1016 00:56:47,840 --> 00:56:49,715 你会成为 访问一些事情, 1017 00:56:49,715 --> 00:56:52,760 在是给你 PHP的全局变量 1018 00:56:52,760 --> 00:56:56,105 正在处理当前 登录的用户,是否有 1019 00:56:56,105 --> 00:57:00,460 有发送到这个被请求 页上,这样的不同的东西。 1020 00:57:00,460 --> 00:57:05,790 它也将是潜在的 迭代通过行的这件事情。 1021 00:57:05,790 --> 00:57:09,010 >> 在一个不同的功能,查询 不会返回这双阵列。 1022 00:57:09,010 --> 00:57:11,450 如果有更多的 比中已有一个行, 1023 00:57:11,450 --> 00:57:15,080 如果有are--是,如果有 在它超过一个的行, 1024 00:57:15,080 --> 00:57:16,870 那么这将是一个表。 1025 00:57:16,870 --> 00:57:20,500 你可能要遍历 在这个数组中使用的行 1026 00:57:20,500 --> 00:57:22,860 我们描述的foreach循环。 1027 00:57:22,860 --> 00:57:30,270 >> 所以,如果你做的foreach上双 阵列,会出现什么word--在这里, 1028 00:57:30,270 --> 00:57:31,909 我其实写。 1029 00:57:31,909 --> 00:57:32,950 我会写它很快在这里。 1030 00:57:32,950 --> 00:57:44,280 >> 如果我们有行一个foreach 为行,什么是行的类型? 1031 00:57:44,280 --> 00:57:45,390 有谁知道? 1032 00:57:45,390 --> 00:57:54,000 1033 00:57:54,000 --> 00:57:54,500 你说对了? 1034 00:57:54,500 --> 00:57:57,110 因此,行是一个双阵列。 1035 00:57:57,110 --> 00:58:02,810 那么,什么是的foreach去推断 我们从该双阵列希望 1036 00:58:02,810 --> 00:58:04,280 如果我们遍历了吗? 1037 00:58:04,280 --> 00:58:07,170 1038 00:58:07,170 --> 00:58:10,770 我们基本可以假定, 这将是两种元素, 1039 00:58:10,770 --> 00:58:14,970 或行或列,基本上是这样。 1040 00:58:14,970 --> 00:58:18,740 所以行和列的我们 可以当作一回事。 1041 00:58:18,740 --> 00:58:23,880 >> 基本上什么foreach循环是怎么回事 做的是它会返回行。 1042 00:58:23,880 --> 00:58:28,500 行会是类型行的, 而行是一个双阵列。 1043 00:58:28,500 --> 00:58:32,290 所以,如果你给的foreach 双阵列,它的 1044 00:58:32,290 --> 00:58:35,830 不会迭代 不止一层。 1045 00:58:35,830 --> 00:58:44,464 这基本上是,如果说有 八个细胞在这个table-- 1,2, 1046 00:58:44,464 --> 00:58:48,110 3 4,5,6,7,8-所述 foreach循环不 1047 00:58:48,110 --> 00:58:51,880 要去通过每个这些细胞。 1048 00:58:51,880 --> 00:58:56,390 什么foreach循环会做 是它会经过此行, 1049 00:58:56,390 --> 00:58:57,870 给你这个整行。 1050 00:58:57,870 --> 00:58:59,410 然后它会通过该行。 1051 00:58:59,410 --> 00:59:01,850 >> 因此,它只能迭代一层。 1052 00:59:01,850 --> 00:59:05,310 如果添加了嵌套 foreach循环,那么你 1053 00:59:05,310 --> 00:59:16,280 可以把从返回的每一行 行,你做的foreach行作为元素, 1054 00:59:16,280 --> 00:59:17,640 比如说。 1055 00:59:17,640 --> 00:59:22,750 然后你可以呼应的元素。 1056 00:59:22,750 --> 00:59:24,930 所以这是一个简单的 如何少进修 1057 00:59:24,930 --> 00:59:30,220 你可能会使用的foreach 循环中的查询的上下文。 1058 00:59:30,220 --> 00:59:32,840 >> 是否有关于PHP什么问题? 1059 00:59:32,840 --> 00:59:36,520 任何事情之前都我们 转移到谈论的SQL 1060 00:59:36,520 --> 00:59:37,820 和数据库的乐趣? 1061 00:59:37,820 --> 00:59:41,480 1062 00:59:41,480 --> 00:59:42,110 感觉不错? 1063 00:59:42,110 --> 00:59:42,750 感觉不错。 1064 00:59:42,750 --> 00:59:43,470 好吧。 1065 00:59:43,470 --> 00:59:49,130 >> 让我们在回移到 PowerPoint中,您可能会错过。 1066 00:59:49,130 --> 00:59:51,800 SQL,耶。 1067 00:59:51,800 --> 00:59:57,900 人们谁是我的部分典型 就知道缩略词的副标题 1068 00:59:57,900 --> 01:00:01,220 永远只是第一个字 我认为,比赛的 1069 01:00:01,220 --> 01:00:02,690 算法 - 这首字母缩写。 1070 01:00:02,690 --> 01:00:04,090 这不是一种算法。 1071 01:00:04,090 --> 01:00:08,050 >> 因此,SQL是一种数据库。 1072 01:00:08,050 --> 01:00:11,060 它是一种语言, 适用于数据库。 1073 01:00:11,060 --> 01:00:14,440 并且所有数据库都为 表,至少在方式 1074 01:00:14,440 --> 01:00:17,220 该SQL代表他们。 1075 01:00:17,220 --> 01:00:23,610 >> 另一种方式来思考数据库是 数据库是一组键和值 1076 01:00:23,610 --> 01:00:24,110 基本上。 1077 01:00:24,110 --> 01:00:29,530 你可以想想一个数据库 一个词典,也可以作为表。 1078 01:00:29,530 --> 01:00:34,300 基本上这是一个方法,关联 不同的数据与其他数据, 1079 01:00:34,300 --> 01:00:36,270 常常通过行和列。 1080 01:00:36,270 --> 01:00:38,470 这就是方式 这是SQL效果最好。 1081 01:00:38,470 --> 01:00:40,880 >> 因此,这是一个表的一个例子。 1082 01:00:40,880 --> 01:00:44,610 我有几个例子 人在我的部分,它 1083 01:00:44,610 --> 01:00:45,970 我没有时间来改变。 1084 01:00:45,970 --> 01:00:52,020 但是,我们已经有了像ID, 名,超级大国,和家乡。 1085 01:00:52,020 --> 01:00:54,100 我不知道任何人的 从我的部分, 1086 01:00:54,100 --> 01:00:56,266 所以我只是要承担 每个人从纽约 1087 01:00:56,266 --> 01:00:59,370 市,因为我有很高的统计学 可能性是正确的。 1088 01:00:59,370 --> 01:01:04,200 >> SQL会自动取 关心你的ID列。 1089 01:01:04,200 --> 01:01:07,560 如果您插入新行 成一个SQL数据库, 1090 01:01:07,560 --> 01:01:09,700 这将增加的 ID号和刚 1091 01:01:09,700 --> 01:01:14,890 基本上坚持到五的名字, 超级大国的故乡,谁就 1092 01:01:14,890 --> 01:01:16,430 到该表的末端。 1093 01:01:16,430 --> 01:01:19,160 所以,ID是一列,你会 永远不用担心。 1094 01:01:19,160 --> 01:01:22,770 但是,像在的情况下 login.php中,当我们 1095 01:01:22,770 --> 01:01:26,610 都拿到会话ID 从表中,只是用ID, 1096 01:01:26,610 --> 01:01:30,320 ID是一种方法,唯一地标识 一个数据库中的一个元素。 1097 01:01:30,320 --> 01:01:34,980 >> 因此,如果我们有两个萨姆斯,两者的 这本书教会了CS50,以及两者的谁 1098 01:01:34,980 --> 01:01:39,370 来自密尔沃基,那些会 还是有不同的ID号 1099 01:01:39,370 --> 01:01:43,420 因而是不同的 表中的情况下。 1100 01:01:43,420 --> 01:01:48,700 因此,这是SQL正在处理 有,在后端工作。 1101 01:01:48,700 --> 01:01:54,160 >> 现在,这些都是四个命令 ,你需要使用SQL工作。 1102 01:01:54,160 --> 01:01:56,390 而我把它们全部在一个幻灯片。 1103 01:01:56,390 --> 01:01:59,530 但是,我们要经过 他们都分别。 1104 01:01:59,530 --> 01:02:03,300 >> 第一个命令是UPDATE, 这不,你可能期望。 1105 01:02:03,300 --> 01:02:07,240 说你有一些数据 该表是过时了。 1106 01:02:07,240 --> 01:02:09,470 如果你保存像 赛道人的名字 1107 01:02:09,470 --> 01:02:13,350 和年龄,如果谁家 年龄的增长,那么 1108 01:02:13,350 --> 01:02:18,590 你会想进去, 更新只是人的年龄。 1109 01:02:18,590 --> 01:02:21,902 对于工作的例子 我们的第一个table-- 1110 01:02:21,902 --> 01:02:24,610 不用担心写的是 这些命令在同一时间。 1111 01:02:24,610 --> 01:02:27,640 但是,如果你有更新了, 这将有利于这部分, 1112 01:02:27,640 --> 01:02:29,790 因为我们要 回到表。 1113 01:02:29,790 --> 01:02:33,920 >> 因此,如果我们回到桌子上, 比方说,事情发生 1114 01:02:33,920 --> 01:02:38,480 在发生地震或 断层线直接拆分 1115 01:02:38,480 --> 01:02:39,920 通过纽约市。 1116 01:02:39,920 --> 01:02:45,130 我们想更新大家 谁住在纽约市。 1117 01:02:45,130 --> 01:02:49,670 他们都不得不搬到宾夕法尼亚州。 1118 01:02:49,670 --> 01:02:51,130 这不是一个故乡。 1119 01:02:51,130 --> 01:02:53,180 他们都不得不搬到纽黑文。 1120 01:02:53,180 --> 01:02:54,030 在那里,我们走了。 1121 01:02:54,030 --> 01:02:57,630 所以每个人都在纽约 移动到纽黑文。 1122 01:02:57,630 --> 01:03:01,300 >> 而这样的东西,是 编辑该表中三行。 1123 01:03:01,300 --> 01:03:04,716 但在SQL中,你可以做 在短短一个语句。 1124 01:03:04,716 --> 01:03:05,715 因此,我们重新更新。 1125 01:03:05,715 --> 01:03:09,670 让我再次快速擦除这款主板。 1126 01:03:09,670 --> 01:03:14,570 当我们谈论 更新,有 1127 01:03:14,570 --> 01:03:17,640 一些部件是关键的语法。 1128 01:03:17,640 --> 01:03:19,770 好了,所有的语法是关键。 1129 01:03:19,770 --> 01:03:22,210 但在绿色的东西是可选的。 1130 01:03:22,210 --> 01:03:25,680 白是必需的, 像预定义的名字。 1131 01:03:25,680 --> 01:03:30,750 而淡蓝色的事情 根据表而变化。 1132 01:03:30,750 --> 01:03:34,640 所以,这就是同回事 配色方案在这里,那里。 1133 01:03:34,640 --> 01:03:40,250 >> 因此,如果我们要更新只是那些行 谁住在纽约的人, 1134 01:03:40,250 --> 01:03:43,490 所以我们想,如果我们说的更新呢? 1135 01:03:43,490 --> 01:03:46,320 因此,表是我们放 我们的表的名称。 1136 01:03:46,320 --> 01:03:49,170 远的不说名字 我们的表是表中的一个。 1137 01:03:49,170 --> 01:03:52,515 因此,我们要更新表之一。 1138 01:03:52,515 --> 01:03:57,470 我们要set-- 我们需要什么设置? 1139 01:03:57,470 --> 01:04:05,160 好了,我们想说的是,这么column-- PHP 把行作为唯一标识符。 1140 01:04:05,160 --> 01:04:07,930 然后列 不同领域 1141 01:04:07,930 --> 01:04:09,940 的数据库的那些元件。 1142 01:04:09,940 --> 01:04:14,210 >> 这样的数据库的第一元件 有山,CS50的超级大国的名字, 1143 01:04:14,210 --> 01:04:16,210 和雄鹿的故乡。 1144 01:04:16,210 --> 01:04:20,710 所以如果我们所说的设置,让我们来看看 再参数设定需要。 1145 01:04:20,710 --> 01:04:23,880 我们有列等于价值。 1146 01:04:23,880 --> 01:04:27,290 因此,我们要说出一些 column--这记 1147 01:04:27,290 --> 01:04:31,850 是field--我们希望看到一个 字段等于新的东西。 1148 01:04:31,850 --> 01:04:42,340 >> 因此,如果我们刚才说的更新 表1,设置名称等于艾略特。 1149 01:04:42,340 --> 01:04:46,310 得到一些人的 在这个新的章节。 1150 01:04:46,310 --> 01:04:51,540 但是,如果我们只是做了更新表1 集名称相同艾略特,会是什么 1151 01:04:51,540 --> 01:04:55,530 该表的样子之后呢? 1152 01:04:55,530 --> 01:04:56,410 人们有什么想法? 1153 01:04:56,410 --> 01:04:59,710 1154 01:04:59,710 --> 01:05:00,210 是啊。 1155 01:05:00,210 --> 01:05:03,195 >> 听众:一切都在那 行会成为埃利奥特。 1156 01:05:03,195 --> 01:05:04,570 演讲嘉宾:这行的一切吗? 1157 01:05:04,570 --> 01:05:06,067 听众:在第一行中。 1158 01:05:06,067 --> 01:05:07,150 扬声器:在第一行? 1159 01:05:07,150 --> 01:05:09,724 为什么第一排? 1160 01:05:09,724 --> 01:05:10,890 我不是说要接你。 1161 01:05:10,890 --> 01:05:13,287 >> 听众:也许一切 在整个表? 1162 01:05:13,287 --> 01:05:15,120 演讲嘉宾:一切 整个表,是的。 1163 01:05:15,120 --> 01:05:19,520 这是完全正确的因为 - 我 刚刚帮你出一点点 1164 01:05:19,520 --> 01:05:22,650 那里 - 因为我们忽略 可选的WHERE子句。 1165 01:05:22,650 --> 01:05:27,260 如果你没有在WHERE 条款,这是什么命令会做 1166 01:05:27,260 --> 01:05:32,240 是它会与每 在表中的一行。 1167 01:05:32,240 --> 01:05:35,430 每个人的名字将 成为埃利奥特,基本上, 1168 01:05:35,430 --> 01:05:37,360 这艾略特是非常高兴的事情。 1169 01:05:37,360 --> 01:05:40,070 或雅尼,两个中的一个。 1170 01:05:40,070 --> 01:05:42,490 但是,每个人的名字会发生变化。 1171 01:05:42,490 --> 01:05:47,880 >> 所以这样我们使用WHERE clause-- 这适用于所有何在的 1172 01:05:47,880 --> 01:05:51,410 这是在每个 这些不同的东西。 1173 01:05:51,410 --> 01:05:54,380 所以,你会发现,SET 有列同等价值。 1174 01:05:54,380 --> 01:05:55,190 所以呢在哪里。 1175 01:05:55,190 --> 01:06:00,040 但这些不同的 类型的语句。 1176 01:06:00,040 --> 01:06:04,400 因此,列等于值 在SET中分配。 1177 01:06:04,400 --> 01:06:08,320 就像我们说我们要 设置名称等于埃利奥特。 1178 01:06:08,320 --> 01:06:15,390 但在WHERE子句, 这些都是平等的陈述。 1179 01:06:15,390 --> 01:06:20,410 所以我们可以说,我们只是想 改变人的名字埃利奥特 1180 01:06:20,410 --> 01:06:23,940 如果他们的名字是瑞恩,让我们说。 1181 01:06:23,940 --> 01:06:24,920 >> 所以,当我们说 1182 01:06:24,920 --> 01:06:32,700 >> 其中name等于瑞安,那 成功将唯一的变化 1183 01:06:32,700 --> 01:06:37,440 在name--那只 改变行的名称字段 1184 01:06:37,440 --> 01:06:40,770 其中名称字段等于瑞安。 1185 01:06:40,770 --> 01:06:44,430 所以,如果我们有多人 名为瑞安,他们所有的名字 1186 01:06:44,430 --> 01:06:45,730 将改变埃利奥特。 1187 01:06:45,730 --> 01:06:48,169 >> 这是类似于实施例 如果断层线分裂 1188 01:06:48,169 --> 01:06:50,960 纽约市和每个人都有 搬到纽黑文,一路上我们可以 1189 01:06:50,960 --> 01:06:56,570 这样做,在一个语句是UPDATE 表1 SET家乡=纽黑文 1190 01:06:56,570 --> 01:07:00,210 其中,故乡相当于纽约市。 1191 01:07:00,210 --> 01:07:03,410 这是功率 UPDATE语句。 1192 01:07:03,410 --> 01:07:10,530 我们可以选择任意数量的 通过真实的陈述行 1193 01:07:10,530 --> 01:07:12,860 关于在那些行中的字段。 1194 01:07:12,860 --> 01:07:19,510 我们不能说UPDATE表1集 名称=埃利奥特其中row = 1, 1195 01:07:19,510 --> 01:07:24,820 不同之处在于,我们可以的,如果我们说的ID = 1。 1196 01:07:24,820 --> 01:07:27,350 1197 01:07:27,350 --> 01:07:29,830 >> 因此,我们将要 平等合作 1198 01:07:29,830 --> 01:07:32,830 字段,列平等。 1199 01:07:32,830 --> 01:07:38,030 但使用ID字段是一种能够 选择单个行具体而言, 1200 01:07:38,030 --> 01:07:43,210 因为ID字段是一个唯一的 标识符在SQL数据库中。 1201 01:07:43,210 --> 01:07:45,860 因此,如更新一行,ID等于1。 1202 01:07:45,860 --> 01:07:49,560 更新两排,只 改变该ID号。 1203 01:07:49,560 --> 01:07:51,610 但是的力量 WHERE语句是我们 1204 01:07:51,610 --> 01:07:57,480 可以基于什么东西更新其 对某些事物的电流值。 1205 01:07:57,480 --> 01:07:58,155 是艾略特? 1206 01:07:58,155 --> 01:08:02,678 >> 听众:如果你想用于:什么 再次,这是另外一个问题。 1207 01:08:02,678 --> 01:08:07,660 但我的第一个问题是, 其中,出现这样的情况? 1208 01:08:07,660 --> 01:08:09,130 我在哪里升级呢? 1209 01:08:09,130 --> 01:08:11,100 这是在一个PHP代码? 1210 01:08:11,100 --> 01:08:13,379 >> 演讲嘉宾:你在哪里更新,是的。 1211 01:08:13,379 --> 01:08:15,170 我们要谈 在哪里这一切 1212 01:08:15,170 --> 01:08:18,729 发生那种一旦我们去 通过所有的命令。 1213 01:08:18,729 --> 01:08:21,130 但是,你需要什么 知道现在基本上 1214 01:08:21,130 --> 01:08:26,279 您的SQL数据库 存在的东西 1215 01:08:26,279 --> 01:08:30,090 到由查询来访问 功能,这CS50定义。 1216 01:08:30,090 --> 01:08:33,800 如果你使用的查询功能,因此, 你可以访问此表。 1217 01:08:33,800 --> 01:08:39,529 >> 所以,你会发送这些 命令你的表中的PHP文件 1218 01:08:39,529 --> 01:08:41,420 通过查询功能。 1219 01:08:41,420 --> 01:08:45,410 您也可以玩 与你的表直接。 1220 01:08:45,410 --> 01:08:49,050 这就是以最好的方式 测试这类命令。 1221 01:08:49,050 --> 01:08:52,720 我们将经历究竟如何 要做到这一点的只是一点点。 1222 01:08:52,720 --> 01:08:54,910 >> 所以这是UPDATE命令。 1223 01:08:54,910 --> 01:08:57,939 和命令的其余 将要排序相似, 1224 01:08:57,939 --> 01:08:59,069 从事类似的事情。 1225 01:08:59,069 --> 01:09:02,740 在INSERT INTO可能 最不同的更新。 1226 01:09:02,740 --> 01:09:06,170 我要离开了那里的 只是一点点和工作在这里。 1227 01:09:06,170 --> 01:09:10,215 所以INSERT INTO,你会看到 该表仍然是相同的。 1228 01:09:10,215 --> 01:09:17,010 你想插入到。 1229 01:09:17,010 --> 01:09:20,286 资本化,SQL 不区分大小写。 1230 01:09:20,286 --> 01:09:22,160 所以,你不必 利用这些东西。 1231 01:09:22,160 --> 01:09:27,960 按照惯例,词语 白色予以资本化。 1232 01:09:27,960 --> 01:09:31,590 但我也颜色编码他们。 1233 01:09:31,590 --> 01:09:34,390 你利用的唯一原因 这些,当你键入它们 1234 01:09:34,390 --> 01:09:36,609 只是强调 这些是常数。 1235 01:09:36,609 --> 01:09:39,189 所以你可以看一下 资本或事实 1236 01:09:39,189 --> 01:09:40,740 我已经不同颜色的他们。 1237 01:09:40,740 --> 01:09:44,910 >> 所以,我们已经有了INSERT INTO, 让我们再来一次表1。 1238 01:09:44,910 --> 01:09:45,930 这是所有在一行上。 1239 01:09:45,930 --> 01:09:48,609 我只是通过分离其 不同的语句。 1240 01:09:48,609 --> 01:09:52,399 所以,不要担心的是, 表1使它到第二行。 1241 01:09:52,399 --> 01:09:56,130 >> 因此,我们要插入 INTO表1中的值。 1242 01:09:56,130 --> 01:09:58,922 你会发现可选 位,我会在第二。 1243 01:09:58,922 --> 01:09:59,755 因此,我们已经得到了价值观。 1244 01:09:59,755 --> 01:10:03,640 1245 01:10:03,640 --> 01:10:08,100 >> 所以我们可以说,我们要添加安迪 我们的表,因为我们错过安迪。 1246 01:10:08,100 --> 01:10:09,390 安迪生病。 1247 01:10:09,390 --> 01:10:12,490 因此,让我们加入安迪到我们的餐桌。 1248 01:10:12,490 --> 01:10:15,150 请记住,ID号 自动更新。 1249 01:10:15,150 --> 01:10:17,320 因此,唯一的领域,我们 需要担心 1250 01:10:17,320 --> 01:10:20,230 包括名称,超级大国,和家乡。 1251 01:10:20,230 --> 01:10:23,660 >> 所以我们这样做的方式, 看着我们的语法,是我们 1252 01:10:23,660 --> 01:10:28,780 只是得到了括号,用逗号 分隔值,其中每一个 1253 01:10:28,780 --> 01:10:29,890 是一个值。 1254 01:10:29,890 --> 01:10:35,530 因此,如果我们想安迪插入到我们的 表中,我们所要做的就是正确的安迪。 1255 01:10:35,530 --> 01:10:38,630 什么是安迪的超级大国, 人们在安迪的部分? 1256 01:10:38,630 --> 01:10:45,406 1257 01:10:45,406 --> 01:10:47,545 她喜欢飞行,还是喜欢 速度,什么的。 1258 01:10:47,545 --> 01:10:48,920 什么是我们已经在那里? 1259 01:10:48,920 --> 01:10:53,425 我们有CS50,飞行, 速度和力量。 1260 01:10:53,425 --> 01:10:54,850 >> 听众:时间旅行。 1261 01:10:54,850 --> 01:10:56,180 >> 演讲嘉宾:时间旅行,令人叹为观止。 1262 01:10:56,180 --> 01:11:04,280 因此,我们已经得到了安迪,时间 旅游,和她的家乡。 1263 01:11:04,280 --> 01:11:05,530 这是一个非常好的问题。 1264 01:11:05,530 --> 01:11:09,210 纽约市,除非有人知道。 1265 01:11:09,210 --> 01:11:13,600 每个人都是从纽约的 教训从今天带走。 1266 01:11:13,600 --> 01:11:17,710 >> 所以,这种说法会 插入,作为第五行, 1267 01:11:17,710 --> 01:11:21,900 与超级大国时间旅行 和纽约市的故乡。 1268 01:11:21,900 --> 01:11:25,660 但可选字段 基本上是一个方式 1269 01:11:25,660 --> 01:11:30,090 准确指定哪些列 要插入的东西研究。 1270 01:11:30,090 --> 01:11:33,710 >> 我们正在做它现在的样子, 岸堤,时间旅行,纽约市, 1271 01:11:33,710 --> 01:11:38,150 打算在的确切顺序我们 table--名称,超级大国的家乡。 1272 01:11:38,150 --> 01:11:42,290 如果你想做的事 东西以外, 1273 01:11:42,290 --> 01:11:44,970 好比说,你不知道 别人的超级大国, 1274 01:11:44,970 --> 01:11:47,660 像我怎么不知道安迪的 超级大国开头。 1275 01:11:47,660 --> 01:11:50,450 所以,我只知道她 的名字和她的故乡。 1276 01:11:50,450 --> 01:11:54,550 我能做的就是我可以 do--我会删除这个快速。 1277 01:11:54,550 --> 01:11:57,910 1278 01:11:57,910 --> 01:12:00,090 >> 我想只更新列。 1279 01:12:00,090 --> 01:12:04,100 而这正是可选 列清单的用武之地。 1280 01:12:04,100 --> 01:12:09,185 我只是想更新的名字和家乡。 1281 01:12:09,185 --> 01:12:12,650 1282 01:12:12,650 --> 01:12:16,480 然后我会说价值观。 1283 01:12:16,480 --> 01:12:24,430 我会做安迪和纽约市。 1284 01:12:24,430 --> 01:12:28,980 >> 如果我忽略列的列表 而刚刚做这两件事, 1285 01:12:28,980 --> 01:12:32,450 其中,将纽约市都到哪里去了? 1286 01:12:32,450 --> 01:12:35,900 这列将纽约 市被放置在? 1287 01:12:35,900 --> 01:12:38,950 人们有什么想法? 1288 01:12:38,950 --> 01:12:40,160 超级大国,没错。 1289 01:12:40,160 --> 01:12:41,890 >> 因此,这将刚进去的顺序。 1290 01:12:41,890 --> 01:12:45,530 而一旦它到达的结束 列表,它会只停留填充物研究。 1291 01:12:45,530 --> 01:12:49,080 而价值观,它会坚持在 所有列也只是空。 1292 01:12:49,080 --> 01:12:51,840 所以,因为我们规定 名字和家乡, 1293 01:12:51,840 --> 01:12:56,110 我们将有ID 5, 安迪的名字,超级大国空。 1294 01:12:56,110 --> 01:12:58,750 所以超级大国是未初始化值。 1295 01:12:58,750 --> 01:13:01,340 你不一定会得到 如果你尝试相同的Valgrind的错误 1296 01:13:01,340 --> 01:13:01,970 并访问它。 1297 01:13:01,970 --> 01:13:05,160 一切都将被很好地归零 出来,因为NULL是SQL中的价值。 1298 01:13:05,160 --> 01:13:06,780 这是一个常数。 1299 01:13:06,780 --> 01:13:08,980 然后,家乡将纽约市。 1300 01:13:08,980 --> 01:13:11,860 所以这是INSERT INTO命令。 1301 01:13:11,860 --> 01:13:13,610 在我们继续之前,有 两个命令。 1302 01:13:13,610 --> 01:13:19,060 人们是否有任何问题, UPDATE,关于INSERT INTO,有关SQL 1303 01:13:19,060 --> 01:13:21,556 一般在我们继续之前 到我们最后的位? 1304 01:13:21,556 --> 01:13:25,500 1305 01:13:25,500 --> 01:13:26,910 人们感觉很好,很棒。 1306 01:13:26,910 --> 01:13:27,410 爱它。 1307 01:13:27,410 --> 01:13:29,480 因此,让我们来谈谈选择。 1308 01:13:29,480 --> 01:13:33,445 去沟更新在这里。 1309 01:13:33,445 --> 01:13:35,720 >> 并选择将是非常相似的。 1310 01:13:35,720 --> 01:13:38,790 选择的目标, 在人生选择的目的 1311 01:13:38,790 --> 01:13:45,910 就是给你一堆列 满足一定的条件。 1312 01:13:45,910 --> 01:13:48,230 当我说满意 某些条件下, 1313 01:13:48,230 --> 01:13:50,800 你的心可能会立即 回到那个WHERE子句 1314 01:13:50,800 --> 01:13:52,090 在UPDATE上来。 1315 01:13:52,090 --> 01:13:54,880 这子句 正是有在SELECT。 1316 01:13:54,880 --> 01:14:06,020 >> 如果我们不把WHERE 条款和我们说选择名称, 1317 01:14:06,020 --> 01:14:16,490 hometown--拼了一点点 wrong--名字,家乡FROM表1。 1318 01:14:16,490 --> 01:14:19,690 如果我们只是说,有什么选择 是想给我们的是它的 1319 01:14:19,690 --> 01:14:23,730 要给我们 double--一个表,而。 1320 01:14:23,730 --> 01:14:27,450 双数组,如果我们 想在PHP检测。 1321 01:14:27,450 --> 01:14:33,239 但它只是要给我们 两个columns--名双阵列, 1322 01:14:33,239 --> 01:14:33,780 和家乡。 1323 01:14:33,780 --> 01:14:36,400 1324 01:14:36,400 --> 01:14:38,130 它会忽略ID。 1325 01:14:38,130 --> 01:14:41,310 它会忽略超级大国。 1326 01:14:41,310 --> 01:14:44,696 而且它会只给我们每一个 该表中单列。 1327 01:14:44,696 --> 01:14:46,570 因此,如果我们只是插入 岸堤,我们将有安迪。 1328 01:14:46,570 --> 01:14:48,605 我们将有原四。 1329 01:14:48,605 --> 01:14:53,720 如果他们一直在更新,这将 被反射,等等,等等。 1330 01:14:53,720 --> 01:14:56,520 >> 因此,这是因为我们 没有使用WHERE子句。 1331 01:14:56,520 --> 01:14:59,200 但是,我们可以在完全使用 同样,我们用它在更新。 1332 01:14:59,200 --> 01:15:05,310 如果我们只希望名表 与人超能力的生活 1333 01:15:05,310 --> 01:15:13,430 在纽约,我们可以执行一个语句 像选择名称,superpower-- 1334 01:15:13,430 --> 01:15:27,190 我只是要离开that-- FROM 表1 WHERE家乡=纽约市。 1335 01:15:27,190 --> 01:15:33,370 >> 因此,这正好说明,你可以 得到完全不同的列, 1336 01:15:33,370 --> 01:15:36,920 然后把列,你是不是 即使取回WHERE子句。 1337 01:15:36,920 --> 01:15:39,200 我们甚至不希望 故乡大家。 1338 01:15:39,200 --> 01:15:41,920 但是,我们希望的名称和 人们的超级大国 1339 01:15:41,920 --> 01:15:43,817 他的家乡纽约市。 1340 01:15:43,817 --> 01:15:45,650 所以,这是我们 可以用在何处? 1341 01:15:45,650 --> 01:15:49,112 子句,我们可以列处理 我们不一定要回去。 1342 01:15:49,112 --> 01:15:52,320 在UPDATE同样的方法,我们就可以处理 与列,我们不一定 1343 01:15:52,320 --> 01:15:53,270 要进行更新。 1344 01:15:53,270 --> 01:15:58,890 我们可以更新这个城市所有人的 谁的名字是山姆,例如。 1345 01:15:58,890 --> 01:16:02,080 我们可以更新的城市 每个人的ID号为2。 1346 01:16:02,080 --> 01:16:04,960 所以才更新 市第二排 1347 01:16:04,960 --> 01:16:08,220 在这里,我们没有处理 必要时常见的问题。 1348 01:16:08,220 --> 01:16:13,264 >> 和删除的,因为你会 预计,DELETE FROM表1。 1349 01:16:13,264 --> 01:16:14,930 然后我们有另外一个WHERE子句。 1350 01:16:14,930 --> 01:16:17,940 所以我们可以说WHERE ID = 1。 1351 01:16:17,940 --> 01:16:18,950 删除的第一行。 1352 01:16:18,950 --> 01:16:23,240 并删除将始终删除行, 或者,将删除的行的一些数。 1353 01:16:23,240 --> 01:16:26,990 DELETE FROM表WHERE 家乡=纽约市 1354 01:16:26,990 --> 01:16:28,740 将删除每个人都在纽约市。 1355 01:16:28,740 --> 01:16:30,985 这就是,如果有一个 突如其来的悲剧瘟疫 1356 01:16:30,985 --> 01:16:33,360 而你只是想删除 大家从表中谁 1357 01:16:33,360 --> 01:16:35,760 生活在某个城市 被击中的瘟疫。 1358 01:16:35,760 --> 01:16:38,050 愿他们安息。 1359 01:16:38,050 --> 01:16:43,849 >> 这些是四个SQL命令 你将需要使用。 1360 01:16:43,849 --> 01:16:45,390 你甚至不需要使用它们。 1361 01:16:45,390 --> 01:16:47,690 但这些都是四 这CS50希望你 1362 01:16:47,690 --> 01:16:53,630 是舒适与进入 这两个测验1,也pset7和pset8。 1363 01:16:53,630 --> 01:16:55,820 >> 这里只是表了。 1364 01:16:55,820 --> 01:16:58,930 在这其中,罗伊的超级大国 被更新,以激光束,它 1365 01:16:58,930 --> 01:17:00,880 是一个例子,我没有使用。 1366 01:17:00,880 --> 01:17:05,480 我不知道哪一个 罗伊喜欢,而是实力。 1367 01:17:05,480 --> 01:17:07,670 罗伊有实力的超级大国。 1368 01:17:07,670 --> 01:17:09,090 凯瑟琳没能成功的今天。 1369 01:17:09,090 --> 01:17:10,260 那真不幸。 1370 01:17:10,260 --> 01:17:11,260 但她具有超强的速度。 1371 01:17:11,260 --> 01:17:13,780 1372 01:17:13,780 --> 01:17:14,670 >> 嗯,这是PHP。 1373 01:17:14,670 --> 01:17:19,410 在我们讨论MVC,不 任何人有关于PHP的问题? 1374 01:17:19,410 --> 01:17:23,864 现在SQL或PHP,如果你突然有 拿出一个关于PHP的问题? 1375 01:17:23,864 --> 01:17:27,560 1376 01:17:27,560 --> 01:17:28,460 大。 1377 01:17:28,460 --> 01:17:29,920 好吧,我们都设置即可。 1378 01:17:29,920 --> 01:17:33,660 >> 所以说话有点 关于模型视图控制器, 1379 01:17:33,660 --> 01:17:38,770 让我们回到一些 在pset7的东西。 1380 01:17:38,770 --> 01:17:42,470 那么,什么模型视图 控制器is--我不是 1381 01:17:42,470 --> 01:17:45,660 要救我的修改登录 因为我完全屠杀了。 1382 01:17:45,660 --> 01:17:49,220 但基本上我们有两个 独立的东西怎么回事。 1383 01:17:49,220 --> 01:17:52,390 我们有一个公开 目录中包含 1384 01:17:52,390 --> 01:17:56,460 代码,那将被执行 并且,将要访问的网页。 1385 01:17:56,460 --> 01:17:58,780 而且我们也有这个意见的目录。 1386 01:17:58,780 --> 01:18:01,780 和视图中包含的模板。 1387 01:18:01,780 --> 01:18:04,390 >> 这就是功能 render--我们看到了渲染 1388 01:18:04,390 --> 01:18:08,240 在一堆的PHP代码的功能 这CS50已经为你写的, 1389 01:18:08,240 --> 01:18:10,550 该取入某些参数。 1390 01:18:10,550 --> 01:18:14,510 什么代码正在做 在它进入的观点, 1391 01:18:14,510 --> 01:18:18,000 这是一组像 预写HTML代码, 1392 01:18:18,000 --> 01:18:20,720 和它的插入值 到某些地方。 1393 01:18:20,720 --> 01:18:23,990 这就是当你 进入CS50金融, 1394 01:18:23,990 --> 01:18:25,760 相同的标题是每一个页面上。 1395 01:18:25,760 --> 01:18:28,130 同样的页脚是在每一页上。 1396 01:18:28,130 --> 01:18:31,880 这是因为这样 这使得作品是它会 1397 01:18:31,880 --> 01:18:36,720 在头自动修补和 浏览器,你可以在视图中找到。 1398 01:18:36,720 --> 01:18:41,400 >> 事实上,我们可以进入标题, 看起来,这是一个头的HTML文件。 1399 01:18:41,400 --> 01:18:43,280 它有一些样式表。 1400 01:18:43,280 --> 01:18:48,450 你并不需要看的CSS 为pset7,如果你不想。 1401 01:18:48,450 --> 01:18:50,560 但是你可以修改 他们,如果你想,做 1402 01:18:50,560 --> 01:18:53,470 您的财务看起来有些不同。 1403 01:18:53,470 --> 01:18:57,560 >> 它有一些PHP的 头有点看 1404 01:18:57,560 --> 01:19:01,240 如果有一个不同的标题 应该把这个头。 1405 01:19:01,240 --> 01:19:04,300 但只是一些其他脚本, 和链接,和其他的东西。 1406 01:19:04,300 --> 01:19:08,700 头端,身体开始,并哎呀, 我们有这个古灵精怪的小端位。 1407 01:19:08,700 --> 01:19:14,730 而且还有一个div,就像 一个无形的元素种类 1408 01:19:14,730 --> 01:19:17,120 这中间有一个想法。 1409 01:19:17,120 --> 01:19:22,450 >> 然后,当我们看到尾, 我们有一个div的末端。 1410 01:19:22,450 --> 01:19:25,000 我们有一个底部,这是 其中页脚文本。 1411 01:19:25,000 --> 01:19:26,770 结束DIV,身体结束,HTML月底。 1412 01:19:26,770 --> 01:19:29,070 >> 那么,什么渲染是 做的是呈现几分 1413 01:19:29,070 --> 01:19:33,150 修修补补的头,一 不同的PHP文件 1414 01:19:33,150 --> 01:19:37,110 将包含实际的东西, 你会看到,像你的股票的表 1415 01:19:37,110 --> 01:19:39,690 如果你是购买或出售股票。 1416 01:19:39,690 --> 01:19:41,480 然后,它会添加在页脚。 1417 01:19:41,480 --> 01:19:44,890 而模型视图 控制器的想法是,我们 1418 01:19:44,890 --> 01:19:49,590 要分开怎么样 事情看起来从代码。 1419 01:19:49,590 --> 01:19:53,420 这是我们要分开的前端 和后端,其中,前端为 1420 01:19:53,420 --> 01:20:00,440 用户可以看到的东西,漂亮的 visuals-- HTML,CSS,这样的事情, 1421 01:20:00,440 --> 01:20:02,320 图像,等等。 1422 01:20:02,320 --> 01:20:05,780 而后端PHP。 1423 01:20:05,780 --> 01:20:07,710 这是你写的代码。 1424 01:20:07,710 --> 01:20:10,240 这是其中的代码那 这样做的实际行动。 1425 01:20:10,240 --> 01:20:12,400 这是当你添加 一只股票你的表, 1426 01:20:12,400 --> 01:20:14,890 当你买进 销售,这是后台。 1427 01:20:14,890 --> 01:20:20,210 >> 我们可以,就像你看到的, 直接包括PHP在HTML中。 1428 01:20:20,210 --> 01:20:23,210 因此,我们可能会对做 这种指派刚 1429 01:20:23,210 --> 01:20:26,200 对于每一页的HTML文件,像登录。 1430 01:20:26,200 --> 01:20:30,260 然后在该网页上,只 有PHP代码巨大的块, 1431 01:20:30,260 --> 01:20:33,822 包括所有的代码是 该网页特别需要。 1432 01:20:33,822 --> 01:20:35,780 然后,我们可以有 做到这一点的投资组合。 1433 01:20:35,780 --> 01:20:40,250 我们可以做所有的买盘 和销售的各个页面中。 1434 01:20:40,250 --> 01:20:43,680 >> 但是,因为我们正在绘制 分别从哪儿 1435 01:20:43,680 --> 01:20:46,660 我们正在编写后台 代码中,我们可以很容易地 1436 01:20:46,660 --> 01:20:52,660 改变的事情怎么看不 改变每一个文件。 1437 01:20:52,660 --> 01:20:55,460 我们做这样的事情只是添加 一个新的div底部 1438 01:20:55,460 --> 01:21:00,720 of--你好,我修改了脚注。 1439 01:21:00,720 --> 01:21:03,710 你可以做类似的东西。 1440 01:21:03,710 --> 01:21:07,250 但同时,你可以改变 整个视觉布局 1441 01:21:07,250 --> 01:21:09,290 在不影响什么 要在后端。 1442 01:21:09,290 --> 01:21:12,000 你可以改变 整个后端,仍然 1443 01:21:12,000 --> 01:21:13,900 有它看起来就像以前那样。 1444 01:21:13,900 --> 01:21:14,400 本 1445 01:21:14,400 --> 01:21:16,170 >> 是模型视图控制器的想法。 1446 01:21:16,170 --> 01:21:19,992 它实际上是一种强加的范例 在一些编程语言 1447 01:21:19,992 --> 01:21:21,700 你可能想使用 最终项目。 1448 01:21:21,700 --> 01:21:25,100 如果你这样做iOS开发, 他们有意见, 1449 01:21:25,100 --> 01:21:29,120 这是你在​​iPhone上看到的, 那么后端的像一个独立的东西。 1450 01:21:29,120 --> 01:21:31,260 >> 你可以想想一点点。 1451 01:21:31,260 --> 01:21:35,190 有很多的二进制文件的 计算机科学,这是有趣的, 1452 01:21:35,190 --> 01:21:37,270 因为一切都在二进制。 1453 01:21:37,270 --> 01:21:38,550 我不打算说。 1454 01:21:38,550 --> 01:21:41,590 这是一个双关语意外。 1455 01:21:41,590 --> 01:21:43,860 是的,双关语并非意。 1456 01:21:43,860 --> 01:21:49,070 >> 但是,像.h文件和.c文件,有 很多东西分离的,我们 1457 01:21:49,070 --> 01:21:49,900 可能不需要。 1458 01:21:49,900 --> 01:21:54,330 因此,我们可以只修改的H文件,或 有人可以只看到.h文件,知道 1459 01:21:54,330 --> 01:21:57,650 正是在该功能 而不一定知道.c文件 1460 01:21:57,650 --> 01:21:58,870 其执行情况。 1461 01:21:58,870 --> 01:22:02,800 分离成分的这种想法 依赖于彼此 1462 01:22:02,800 --> 01:22:06,990 但那种互相访问 通过不同的渠道,传递 1463 01:22:06,990 --> 01:22:09,310 的变量,只 包括陈述,事情 1464 01:22:09,310 --> 01:22:14,440 这样,这一原则 有助于创造应用 1465 01:22:14,440 --> 01:22:17,080 这可以更容易地 由多人编辑, 1466 01:22:17,080 --> 01:22:20,440 可更容易地改变 或修改的规模很大, 1467 01:22:20,440 --> 01:22:24,880 和更容易 调试在很多方面。 1468 01:22:24,880 --> 01:22:28,254 >> 真快,我有 对于pset7的一些技巧, 1469 01:22:28,254 --> 01:22:31,420 我将充分屏幕,所以你不 只看the--窍门TIPPEE。 1470 01:22:31,420 --> 01:22:33,964 1471 01:22:33,964 --> 01:22:35,130 有没有那么多的技巧。 1472 01:22:35,130 --> 01:22:38,060 >> 但我提到的PHP是难以调试。 1473 01:22:38,060 --> 01:22:39,290 双重和三重检查。 1474 01:22:39,290 --> 01:22:41,550 如果你的代码是不 显示在页面上, 1475 01:22:41,550 --> 01:22:46,240 它可能是一个PHP的错误,对不起。 1476 01:22:46,240 --> 01:22:48,570 >> 你永远需要看看 如果你不想CSS。 1477 01:22:48,570 --> 01:22:52,150 但是,一旦你完成,也可以是 一个可爱的小有趣的事情,只是去 1478 01:22:52,150 --> 01:22:54,770 和乱用CSS的参数。 1479 01:22:54,770 --> 01:22:58,700 CSS和HTML是一模型的一个例子 视图控制器风格的事情太多了吧? 1480 01:22:58,700 --> 01:23:02,150 你可以有风格的标签 在HTML元素。 1481 01:23:02,150 --> 01:23:04,800 但是,如果你的排序 它们外包给CSS, 1482 01:23:04,800 --> 01:23:08,180 它们更容易编辑和播放 周围,​​并有乐趣。 1483 01:23:08,180 --> 01:23:10,816 >> 治疗CS50帮手 作为黑盒子。 1484 01:23:10,816 --> 01:23:12,940 不需要知道 正是渲染在做什么, 1485 01:23:12,940 --> 01:23:16,770 但相信它总是做正确的 这取决于你传递的东西, 1486 01:23:16,770 --> 01:23:17,690 这样的事情。 1487 01:23:17,690 --> 01:23:21,040 我会推荐 看大卫的演练, 1488 01:23:21,040 --> 01:23:24,490 经历所有的 的东西,而不仅仅是待办事项, 1489 01:23:24,490 --> 01:23:26,960 但你真的能治疗 这些黑盒子。 1490 01:23:26,960 --> 01:23:29,280 不要进入这些 功能寻找漏洞。 1491 01:23:29,280 --> 01:23:33,510 >> 并欢迎回报 我们的霸主Zamyla。 1492 01:23:33,510 --> 01:23:34,010 大。 1493 01:23:34,010 --> 01:23:40,430 >> 是否有之前的任何最终的问题 那种我们反弹的一天? 1494 01:23:40,430 --> 01:23:42,610 我仍然活着? 1495 01:23:42,610 --> 01:23:44,700 大。 1496 01:23:44,700 --> 01:23:47,120 嗨livestream人。 1497 01:23:47,120 --> 01:23:47,620 大。 1498 01:23:47,620 --> 01:23:50,260 是否存在了问题吗? 1499 01:23:50,260 --> 01:23:50,760 没有? 1500 01:23:50,760 --> 01:23:52,884 >> 然后,我想我们 好走的今天。 1501 01:23:52,884 --> 01:23:55,550 我会坚持围绕一点点 之后,如果人们有问题 1502 01:23:55,550 --> 01:23:57,480 他们也不敢问在流。 1503 01:23:57,480 --> 01:23:59,790 但除此之外,有一个美好的一天。 1504 01:23:59,790 --> 01:24:01,933