>> SAM LEVATICH：欢迎 节这个星期。
我不是安迪。
安迪生了病这一天，和我 那种被称为在最后一分钟
接管。
这是流感季节，所以一定要确保你 是住干净，洗手，
和饮食健康，使 你也一样，不是卧床不起。
>> 但是，如果没有进一步的 废话不多说，让我们开始吧。
今天，我们要谈论 关于PHP bit--如何一点点
PHP涉及到HTML，它是如何 涉及CSS和一些纸幅的
东西你做了最后一次转让。
我们要谈 有关SQL一点
以及如何使用数据库的工作， 这是P的一个非常关键的组成部分
设置8- P设定7。
P设定7。
>> 然后，我们要谈一点 有关视图控制器是如何工作的位
为什么这是一个理念背后的一些 现代的网页和不同的设计。
差不多了很多类型的应用程序 和应用程序，你可能会出货
利用该模型， 视图控制器架构，
你会使用 P中设置7，所以我会
讲一点点 为什么这已经成为
流行的，为什么它是重要的和漂亮的。
然后，我将最终转移到 关于解决P的一些技巧设置7。
如果我们有时间 剩下的底，
我们实际上可以做一些 上一起工作。
>> 因此，PHP。
事实上，你可能已经注意到this-- 你真的没有潜入它 -
但P设定6有一些PHP 这是怎么回事代码。
而由于PHP是一种类似C 语言，PHP，不像HTML和CSS，
是一种编程语言， 而HTML和CSS是静态的。
他们是处理标记语言 与风格和视觉布局。
PHP是实打实的。
>> PHP有循环，它具有条件 - 所有的东西，很有趣约C.
它有几件事情是一个小 位比C，我们将看到更好的，
但我认为，最简单的方法谈 关于PHP只是潜水研究。
所以我要去权 到IDE在此点。
我们要的第一件事情 这样做实际上是看
在一些一点点 PHP代码，这是P中设置6。
让我们做that--方式 之前，我们正在运行的方式
服务器为家电 是，我们将不得不类型 -
既可以使用您的实现 或员工实施
server.c通过进入目录 并运行server.c与不用
arguments--所以叫它的 本地主机，这就是你大概是什么
做了大部分的时间 - 的 然后喂养它
有directory-- 其中作为其根使用
其中，网站将 运行，基本上是这样。
>> 本周的p设置7，如 伟大的，因为我们的代码server.c
是，还有人谁已经 在CS50写这些美好的事情了
有一点点 更多的功能，
一个服务器程序，它是能够 处理多一点
错综复杂的关系，我们将 看到在P组7和P设置8。
并且您启动的方式 服务器只需键入“apache50。”
>> 你做任何事情之前， 你要确保
阿帕奇50不 已经运行，因为它是
在我的机器，我做到了，以测试它。
而你做到这一点通过调用apache50。
停下来，你会看到它停 Web服务器，如果你能在那里寻找
在终端窗口的底部。
然后刚开始，我们 要叫，“apache50开始。”
然后我们要去 给它一个目录。
>> 现在，因为我们想看看 在一些为P的设置6个码
我们已经实施了，其实我 复制的P一点点
设置6码到我自己的文件夹中， 您可以在左边有看到。
这就是所谓的“SECTION8” 在所有大写字母
因为我只是太激动了 以视频直播的今天。
>> 因此，如果我们运行它，它应该 一切都非常有效地开展工作。
它说，好了，我们的网站现在 可在IDE的地址，
基本上，这是你正在使用 正是因为它是在P设定7-- P设定6。
我所有的指标是当今一个索引。
因此，我们可以去那 地址，如果你还记得，
只需点击这个小 按钮在右上角。
>> 你还记得这个代码，这 当你走进hello.php发生。
和哪些代码被设计成 做的是，当你在一个名字类型
这里 - 如果你说山姆 因为这是我name--
我点击打招呼，当 我们去到下一个页面，
该名称应该显示。
它会说，“喂，山姆” 或“你好，”任意名称
投入它，即使我们去 以一个全新的网页。
>> 这是诸如此类的事情， PHP可以为你做。
PHP是能够通过数据 在两个网页。
这是一个完全不同的页面。
你会看到标题为“Hello”在这里。
实际上，它们具有 同样的冠军，但我
保证它们是不同的网络 网页如果我们看看源。
你可以通过这就是数据 在这个文本字段中输入，
你提交给下一个 页面正在被叫了起来，
然后该数据能够 在那里以其目前的形式。
>> 现在我们还没有实现 这个我们自己，这
就是我们要做的，现在到 排序得到了香精，用于PHP是如何工作的，
但关键的想法是，PHP--可以 那种认为它像一个功能。
东西PHP可以让你 做的是它可以带参数
您输入到HTML页面 通过使用PHP和形式，
它可以通过那些作为参数 给它加载了下一个页面。
>> 在这种情况下，我们加载了这个 页的“打个招呼”按钮。
但现在，其实我 删除了一些代码
在hello.php当时正在运行 这实际上显示了“你好，
世界“或”你好，萨姆“或 “你好，”无论是刚投入。
因此，对于现在，我们 要做到这一点，基本上是这样。
我们将重新创建和 还添加一些更多的功能，
做多一点吧，看 PHP是什么真正的能力。
>> 因此，首先，让我们来谈谈 该文件，hello.php。
因此，如果我们放大了 小bit--现在我
那种试图滚动所有 顺便around--我们走吧。
你会看到它被称为 hello.php，但语法它
看起来像一个HTML文件。
这是因为 在该文件中的实际的PHP
在所有的这些卡之间 问号插入符块。
这里的一切 被认为是PHP代码。
>> 而且你会发现， 当我做了评论，
你会看到熟悉的 两个正斜杠。
如果你还记得，在 HTML，如果我输入评论，
它看起来更接近于 这一点，这是HTML注释。
之间，真是应有尽有 这两个尖括号
现在是PHP代码，这 反映在实际上
这个小注释符号 变成一个注释。
>> 所以每次你写PHP代码，甚至 如果有在它之外没有HTML代码，
它总是将是 括在这些尖括号
带有问号的。
那种你可以考虑一下它 - 怎么回事 跑在你的C程序代码
被封闭在一个int主，无效的， 大括号，结束大括号的语句。
你会看到在大括号 PHP也一样，但这是有点
像PHP的主要方法。
>> 所以，现在，我们该怎么做在PHP什么？
现在，PHP是一种编程 语言这是非常类似C，
但它的运作在网络上。
所以一件事， 你会immediately-- 1
你真的跟做的第一件事 ℃的你打印的东西了，对吧？
因此，在C中，我们做到了 用printf函数。
我们给它一个字符串， 可能有一个新的生产线，
然后我们终止 它与一个分号。
>> 所以说我们要做到这一点的方式 在PHP--因为它不是相当的printf。
这是不同的语法一点点。
我们打​​印的东西出路 在PHP是我们说，“回声你好”
或“回声”的任何文字。
并且具有这样做的效果 printf输出字符串，“你好。”
并增加了新的生产线给它。
>> 因此，让我们现在做sure-- 我会再次缩小了一点bit--
让我们确保 该代码工作
因为很可能会 以及在这个代码中的错误
我们将必须解决。
因此，服务器已经在运行。
因此，如果我们滚动回落至底部， 是啊，在服务器仍在运行。
因此，如果我们只需轻按在此 有点右这里 -
welcome--我们应该get--很大。
>> 我们仍然拥有的 熟悉的“问好”的对话，
但是当我输入“喜”，我们拭目以待 文本“你好”确实是
打印出来，这是完全一样 我们预计，由于回响在PHP
就像是一个printf语句。
于是回到代码，如何在P设定6那样 您提供的发行代码
让这个PHP会 输出的东西，你
上一个屏幕上键入的？
>> 而要排序的研究 为什么出现这种情况，我们
要进入的index.html，这 是原始的文件，该文件是
显示了这个屏幕上 与“打个招呼”按钮。
您会注意到有 所有的经典的东西
我们来自HTML这样的期待 因为这些东西，这些标签封闭
在尖括号，如PHP 但没有问号，
这表明一个特别的事情为HTML。
我们有称号，这是“你好”。
而且你会发现，正如我们所看到的， 标题是在两种情况下的“hello”。
让我们改变这一个 以“说”只是让我们
能够区分自己哪里了。
>> 但是，我们已经有了一个身体。
然后是有趣的一点，在 位，显示了在HTML，
是这样的表单元素。
因此，我们有一个形式。
这是关键。
这是我们如何使用PHP。
的动作参数 形式表示，hello.php
就是我们要发送的 在这种形式的值。
这是我们传递 参数，可以这么说。
>> 你会注意到这里还有一件事 是，该方法是“获取”。
有两个主 方法通过在后
可以使用PHP来传递数据 websites--网页之间，
rather--此分配。
而这些方法都是“get”和“后”。
有一些微妙 GET和POST之间的区别
我们会得到into--我们 将“得”到，如果你愿意。
>> 但是，对于所有的意图和 目的，get和post
都只是方式 你传递参数
略有不同的执行。
现在，我们要使用get因为 得到的是什么最初使用
在P的PHP文件中设置6。
而实际上，如果我们进去看看 之前我们已经别的编辑什么，
我会打个招呼 用于：你叫什么名字？
>> 听众：艾略特。
SAM LEVATICH：哦，天哪。
我不知道如何拼写的。
你能拼一下吗？
听众：E-L-L-I-O-T。
>> SAM LEVATICH：我-O-T？
>> 听众：是的。
>> SAM LEVATICH：完美。
好。
我想我确实知道如何拼写的。
对于那个很抱歉。
但是，如果我们说“打招呼，”这不是 它不会显示在屏幕上
然而，由于我们修改 代码一点点。
但是，如果我们“打个招呼” - 好了，“你好”就在这里。
但是，如果我们仔细 看看URL本身，
我们将看到它结束 与hello.php？NAME =埃利奥特。
>> 所以，这是一种方式 连通到下一个网页
我们已经传递的参数。
我们说的名字=埃利奥特。
而这最终P如何设置6 访问我们通过在变量
通过形式。
这是东西 所特有的GET请求。
GET请求，使参数 在网站的URL已知的。
>> 你会记得，太多， P中设置6，你
只好写一个函数 该处理的事实
这个查询字符串 一个文件后，可能存在。
有可能是一个问号，后面跟随 通过基本上任意数目的字符。
而这正是这里发生了。
你有原因解析 在P中实现server.c的
设定6是使你能告诉 PHP代码的NAME =埃利奥特。
您需要能够以 解析出的URL
使有问题的PHP文件 知道它处理。
>> 因此，希望这给 动机server.c
现在我们继续前进 的C外到PHP。
因此，让我们真正专注于访问 通过GET请求事情现在
在此刻。
我要保存这个。
我们没有改变任何东西。
看起来我们已经有了一个输入栏。
>> 我们设置一些属性， 因为我们可以做一个HTML。
这些都是简单的事情。
我们不需要这些。
但是，我们已经有了自动完成了， 这基本上says--你知道，
当你输入的东西 入网络，有时
它试图填补的为您服务。
所以这是一个很好的事情。
我们要关闭它用于此目的。
这是一个CS50的决定。
因此，我们可以删除，如果我们想要的。
>> 自动对焦刚粘光标 在开始时的形式的权利。
同样，没有太重要了。
>> 但NAME =“名” - 这是一个有点 棘手，因为它的名字和名称。
但我们可以已经改变 这对别的东西。
而事实上，这是 我们要做的现在。
我们会说“的人，”这 有点像名
如果一个人是由他们的名字来定义。
>> 因此，让我们关闭此， 重新打开了我们的网站：
因为我们的服务器仍在运行 Apache的50，我们会说，你好，这里是
艾略特一次。
为什么不呢？
您好。
如果我们走在这里，我们将看到 而不是名称，则=埃利奥特，
它说：人=埃利奥特。
这就是这一事实的直接结果 我们只是改变了名称=“人”。
>> 因此在一个输入元件 HTML表单的名称字段
是标识符的 这正在被传递的参数。
这就像如果你创建一个函数 “加”是参加了两个整数
你说的INT A和INT湾
这将是一个名称，并且如果 你想要的另一种形式，这
我们可以通过复制做到公正， 粘贴，那么我们将不得不名湾
>> 所以，现在我们有两个参数： 正在通过传递
到达下一个website-- 下一个网页，hello.php。
我们可以清楚地看到 这一次，如果我们想要的。
这是处理最简单的方法 在IDE的网页代码，基本上是这样。
你启动服务器，把它 运行，然后每一次
做出一些改变，只需关闭 该文件只是为了安全起见。
按后退按钮 是有点棘手
因为它可能会加载一个较早 版本，而不是最更新之一。
>> 然后你只需点击 按钮再次，弹出右键up--哦，
现在有两种形式。
因此，如果我们输入一件事到每个 埃德蒙顿“贾森赫什霍恩，”对于instance--
我们打​​招呼。
我们仰望我们的参数。
看起来我们已经得到了，因为 预计，A =杰森和b =赫什霍恩，
它代表了两个参数 我们传递给这个函数。
>> 所以，现在，让我们真正得到 实现该功能，我们
有P中设置6。
所以现在我们只是呼应打招呼。
而这还不是非常有用的。
我们要回应一些变量 这是传递给我们。
我们也知道这个变量的名称。
我们有一个，我们已经湾
因此，我们可以选择回声任何一个。
>> 但是，我们如何获得呢？
嗯，也有一定的 在PHP中的全局变量。
而且我会写 他们在这里评论。
这两个最重要的是GET 并张贴我们的目的现在。
这些是阵列或， 技术上，该词典
在那里我们的变量，我们是 传递到下一个网页直播。
我们将很快看到如何使用它们。
>> 关于PHP代码的另一个简要说明 而它 - 在C中的一些细节，
声明变量 或者使用变量，
你首先必须声明它们。
而你又做什么，当你 宣称他们是说INT一个或炭湾
你必须申报这些类型 之前变量创造了他们。
PHP--你不需要做任何的。
PHP不要求 变量的类型。
和使用的方式 创建一个变量 - 而
不是说INT，CHAR，string-- 这是真正的char *，因为我们知道 -
而不是做所有的 即，因为一切
是相同类型的， 无类型，我们只要
使用一个字符，这 是美元符号。
你会看到它已经弹出 起来，小自动完成的事情。
而且它说_GET和彦博 有两种选择，我有可用
对我来说。
其中的一些其他的东西 在PHP中其它全局变量
您将使用过 P的过程设置7​​。
现在我们要 注重GET和POST。
但是，这是一个有益的 该IDE做的事情
一旦你输入的地方 在美元符号，
它会开始填充全局变量 或者你已经定义的变量。
>> 所以，如果你想定义 一个叫做变量“字符串”
你可以只将其设置为“喜”。
而且它基本上是这么简单。
然后我们可以做 像“回声$字符串。”
IDE将要抛出一些 错误，如果我做错什么，
所以希望我做的一切权利。
但错误总是这样出现的。
>> 关于另一个棘手的事情 PHP是，它不是编译。
因此，与C程序，你会怎么做 日常of--基本上，
你会做编辑 你的代码，你会来救它，
然后你会 使，在化妆是
调用该编译器的步骤中， 铛，使你的代码，该文本
文件，到可执行。
PHP是C类，但它的执行 在通过Web浏览器飞。
因此，有没有办法知道。
>> 请将引发这些 有用的错误，对吧？
这将是一样，你 没有宣布这个变量
你尝试过使用它。
你做了这一切坏stuff--段错误， 段错误，所有诸如此类的有趣的时代
随化妆。
PHP是一种双刃剑 因为你不会得到这些错误，
但是这也意味着你不会知道 真的有什么错你的程序
如果你只是运行它，它不工作。
但调试器应该指出 一些希望有用的小事情
语法就可以解决。
>> 因此，如果我们去了用于： 说了，让我们关闭了。
重新打开。
我们又回到了这里。
所以，我们已经有了一个变量 和一变量b。
而这些都不会最终无所谓。
我们会打电话给他们^ h和g 无特殊原因。
>> 而我们打招呼。
现在看来，我们的字符串 “喜”确实打印。
我们创建了一个名为变量 “弦”，将其设置为“喜”。
请注意，我们没有做 的malloc或作出一个字符数组。
>> 在PHP中，由于变量 是无类型，一个字符串
是一样的字符为 所有意图和目的。
这可能是“喜”。
这可能只是角色k。
这可以是一个数字1。
而且它并不关心。
PHP不关心 你的变量的类型。
或者，它确实照顾。
当您尝试它关心 和做的事情吧，
但它并不关心在 声明一步。
>> 就这样你就可以在C，你可以 栈像这样的声明串
虽然说“栈”是一个小 一个潜在的用词不当，当位
我们谈论的PHP。
但是，我们不必担心。
因此，我们得到了我们的字符串 “嗨，”我们回显字符串。
所以，现在我们已经讨论了变数。
所以，现在我们需要谈谈get和 发布并执行的最后一件事那
需要真正得到这个备份 到P的功能设置6。
所以现在我们 呼应字符串，但我们
确实有这些变量GET和POST。
而且因为我们使用 该方法得到的，它
很自然，我们的变量 我们感兴趣的，A和B，
将位于在阵列中 或字典，在技术上得到。
>> 所以，如果我们成立了得到这样 你groups--我按下进入
它不喜欢它 - 但在这里，我们有得到。
并因此获得已经存在。
因此，我们已经可以开始访问 有些人会的元素。
如果我们得到的，这个语法 在PHP中的数组非常类似C。
我们有我们的两个方括号。
>> 所以，如果我们说得​​到一个正常的 数组，我们就可以访问
第零指数，第一索引。
PHP是零指标。
我们可以说零，一， two--这样的东西。
而且我一直在说，得到 在技​​术上是一本字典。
那么，什么PHP做的引擎盖下， 这是比C一点点更好，
是它已经是给你一些 词典功能，这
真的是哈希表， 或尝试，据说。
或者，在技术上它 可以一试为好。
但是PHP正在实施一个哈希表， 形成一个有效的词典。
>> 因此，我们知道这个名字 我们的变量，对不对？
它被传递 通过PHP查询字符串。
我们有A = H且b =克，其中和b 是变量的名称。
这样的方式，我们可以访问 对应于密钥值
在我们的词典 只是说_GET_GET [“一个”。
>> 所以现在我们有_GET [“一”。
如果我们只需更换里面 我们的回声，如果我们回声_GET_GET [“A”] -
我们会如果调试器看到 抛出约this--任何错误
我们将保存并关闭了这一点。
打开它。
所以，我们只是做了正确的 现在，所以B不应该的问题。
“她”和“他” - “哼。” “她”和“哼哼。”
听起来不错。
>> 它打印出来 “她说，”这太疯狂了。
但是，这到底是什么 是发生P中设置6。
基本上，P设定6 是doing--回声你好，
name--其中它有一个 变量的名称，它只是
问你在文本的位输入。
以前也有一些 额外的代码在哪里
它包括if语句， 这是我们现在可以做。
>> 我们可以说，如果存在，其 是PHP中的功能，
_GET用下划线，“名” - 这基本上是说，
“如果名字已经填充了”，因为 我们只需单击按钮
无需提交表单 输入任何内容到该领域。
而我们总结了在我们的 友好的大括号。
我们可以有一个else语句。
而这一切在PHP的角度 支架，问号，尖括号，
如果你愿意。
>> 现在我们可以看到，如果这个工程。
我一直在等待它调试 和废话了我，基本上，
但它没有。
也许这将现在 因为我讲了。
对。
它做到了，其实。
那么，什么也没有显示出来。
这是因为一些错误 我写在PHP代码。
而我所提到的调试 是棘手，因为在PHP中，我们
没有预先编译 而编译器是不喜欢，
这里的地方你的错误。
>> 但是，我们能做些什么 is--做的人记住
如何看待不同的网络 该PHP--或网站请求
发送？
[？马林？]这样做的 讲座一次或两次。
你还记得我们去哪里找 不同的债务和200 OKS，
正在发送的所有这些代码 通过HTTP的网页，网页？
曾记否 我们去哪里做？
>> 听众：页面源代码。
SAM LEVATICH：页面源。
究竟。
如果你去页Source--完美的。
所以页面源代码拉起督察。
>> 而我使用的Safari浏览器。
你们很多人大概会 可以使用Chrome或Firefox。
但只要你 在任何现代browser--
并随时跟进 同时，如果你想要的。
您最多可以输入此代码或 只是看在P组6的内部
目录中一些类似的东西。
hello.php是我们 目前正在仿效。
>> 所以有各种标签。
我们可以看一下所有的资源。
我们可以看到的源代码。
所以看起来它没有 闯过身体到底。
它在PHP中，它发现了一个错误 停止加载整个网页。
我们甚至没有结束 标记HTML或任何东西。
>> 如果我们看一下网络，我们可以 看到我们正在发送的请求。
这是域。
这是地址。
这是一个文档。
我们使用get方法。
>> 而且它是红色的。
或者，它是红色的，当我 不选择它。
我怎么不选择呢？
那么，它是红色的。
让我刷新。
在那里，它是。
现在，它是红色。
>> 因此，它是红色的，这意味着 它失败了，这是不好的。
所以，让我们来看看它为什么失败。
因此，所有的页面源可以 基本上告诉你，是你的事
没有工作，我们已经可以看到。
因此，理想情况下将有 是更为有用的工具。
还有一些浏览器扩展 ，让您的PHP调试，
但我们不打算 可以写一吨的PHP，
所以它可能只是最好的 翻阅你的代码
仔细，只要确保 它没有做别的事情。
>> 因此，让我们来看看，如果这个格式 if语句是问题的所在。
我想加载备份在这里。
你好。
所以这是一个问题。
>> 因此，对于正确的语法 PHP的，PHP是怎么回事
为C类的，你会看到循环。
if语句，你会看到的。
你会看到所有的这些朋友 你已经熟悉
超过课程 这CS50学期。
但是，最好的办法弄清楚如何 做一下PHP是谷歌，
还是要看PHP代码的一些例子 因为你知道的功能。
>> 你知道你能 做的程序。
你可以循环。
您可以根据需要循环多次。
您可以循环中的所有 各种不同的方式。
您可以创建功能。
您可以创建函数 呼叫等功能，功能
那个自称。
而且你的名字，这些概念。
你有递归，循环， 如果，其他的控制流。
所以，谷歌是你最好的朋友。
甚至说，“PHP如果 声明“，并有会
要吨，职位 答案给其他人
谁已经有类似的问题给你， 谁是刚刚开始接触PHP
和好奇语法的事情。
>> 因为我们拥有的是奢侈品 能看P中集6的代码中，
我们实际上拉起来，看到 好了，下面是一些有趣的事情。
因此，这是它实际上 看起来像P中设置6。
因此，如果我们通过这个， 我们可以看到，我们已经
有几个这些小的 PHP般的问号位。
>> 而且不会有大括号。
有冒号。
而且有大 括号中的PHP，但是这
是一种格式和做的一种方式 PHP与HTML效果很好
因为如你所见，我们现在要关门 关闭这些PHP bits--了别人的
而如果和所有that--后的 我们在他们里面穿插HTML
同时还继 控制流设置由PHP。
>> 所以我只是要 通过这个快走
因为它是一个很大的相同 概念，我们之前做的事情。
如果不为空，我们已经得到了， 括号，_GET_GET [“名称”]。
这都是一样的东西。
我们使用的_GET字典， PHP将根据表格的要求，
因为它是的参数 动作，并且该方法是获得。
然后，该结束了。
冒号是一个能指只做到这一点 如果if语句的计算结果为真。
这就像一个大括号。
而事实上，这是一个大括号 在其他语言如Python，
您可能，如果你只是遇到 这样做，对你的最终项目。
>> 然后这条线，你好。
然后，我们已经得到了这个奇怪的事情。
我们有更多的括号内。
有没有HTTP那里 - 或者PHP，对不起。
但有一个等号。
然后我们有一个函数， 用htmlspecialchars（_GEThtmlspecialchars（_GET [“名称”]）。
这有点像一个更 高级版本回声。
就像我们已经回应的一种方式 打印出来的东西在PHP。
这是一个函数，是 在PHP中定义
将处理一些更讨厌 字符和字节值
你可以通过它。
它总是最安全的使用。
但是，回声会做的工作 就好了，如果我们不
处理任何事情太讨厌。
>> 所以这具有相同的 基本上效果，
这个东西在这个问题之间 标记是由PHP评估。
用htmlspecialchars返回一个不错的HTML _GET_GET [“名称”]，即印刷价值
无论我们输入的形式。
然后它会打个招呼， 逗号空间，然后将该。
之间的整个事情 尖括号
将取代任何 用htmlspecialchars推出。
所以这是基本相似 以我们正在做的。
我们有一个else语句是 世界你好，这是有道理的。
所以，现在，让我们回到我们 代码，看看exactly--哦。
我说存在，这是不 一个事情，我们想做的事。
我们想说的话不是空的。
>> 所以这应该有点 好一点，不为空_GET_GET [“名称”]。
而这大括号 匹配大括号。
现在我们得到我们的大括号内。
回声你好_GET [“名称”]。
让我们来看看这效果更好一点。
我们仍然运行在我们的服务器。
您好杰森。
和它的工作这一次。
所以这是一个证明 你的确可以
使用大括号，你 熟悉和喜爱在HTML PHP代码。
提供给PHP代码 您在PSET 6-- PSET 6--
提供了另一种方式 这样做同样的事情。
>> 所以，现在我们有力量。
我们有功能来实现 我们在PSET 6看到的PHP代码
由我们自己，基本上是这样。
在我继续前进，有哪些的 你必须在这一点上的问题？
是[听不清]。
>> 听众：所以在pset6的版本， 当你运行它，有一个空间。
我能看到的空间 后面的逗号。 [听不清]启动
开放的支架。
你怎么把的空间 你写你自己的代码的方法是什么？
>> 演讲嘉宾：这是一个很好的问题。
因此，让我们明白这一点。
所以这是一个非常好的问题 一，我没有考虑。
但是，让我们一起做吧。
>> 所以首先，是什么 我做的回声
当我们刚刚回声 你好，你好输出。
如果我们现在呼应这个获得独立 行，让我们看看会发生什么。
所以我们点击这里。
我们一直在说，喜贾森。
所以，再一次，我们没有这个空间。
>> 那是因为，在 PHP的，当我们有回声，
无论有多少 spaces--不，不是V--
无论有多少空间，我们投放 这里 - 如果我们现在再重新装了起来，
喜贾森。
是啊，看，所有这些 空间得到了吃掉。
而这件事情， 回声功能一样。
>> 所以要照顾 空间，而这是
的原因之一 你为什么不使用echo
并使用用htmlspecialchars代替。
我很好奇会是什么 如果我们没有这种情况发生
在这里我们封闭在一个字符串的空间。
我真的不知道是什么 当我这样做会出现这种情况。
>> 所以，这是一种方式。
这是要照顾它的一种方式。
如果包裹的空间 一个字符串，则空间
将输出很好地通过回声。
做最安全的事情是 做用htmlspecialchars。
这始终是安全的赌注。
但是，现在我们有办法做到 它的回声，如果有必要的。
并以类似的方式，我们可以 回声新的生产线，所有的排序
东西你熟悉做在PHP。
>> 任何人，什么是更多 问题是其他人都
在这一点上关于PHP？
如果人们出现了一个有点晚， 我很高兴留后一点点
说说一些开始。
而且这也是所有livestreamed， 和存档，这太疯狂了。
>> 无论如何，所以现在让我们做一些 更先进的东西用PHP。
而最早的事情之一，你 被引入到C组的循环。
和PHP拥有更强大的 所谓循环foreach循环。
它看起来像this--每空 为空白，大括号，该做的事。
因此，这基本上是一个简写。
>> 你看，在for循环中一 句法结构
被设计在C和汇编 语言之类的东西。
设计出C，准确的说，作为一个速记 对于很多循环的类型的
人们会看到的。
当你写一个循环，有没有像 常常是一个初始化步骤
一开始，右执行 调节在环路将stop--
这就是功能 这只是在一个while循环，
或者说一段时间恰有 只是feature--然后
一个增量步骤在末端。
所以你会经常发现自己 编写代码如下所示。
我要删除一些这方面的。
>> 但是，如果我们迭代通过 以阵列的字符，
举例来说，像我们已经 得到的字符阵列。
对不起带回C.我知道， 你以为你做了。
但是，这只是为目的 学习PHP的，我保证。
所以，如果你有一个char海峡 长度为8，让我们
说这说Hellooo 后面有个空。
太好了，所以这是我们的字符串。
>> 然后我们有一个for循环。
我们是int i等于0。
我们想退出str的时候 我等于不等于空，
因为我们退出的时候它等于空。
然后我们做我++在每 点在for循环。
做一些与我海峡。
>> 因此，基本公式是， 我们有这个数组，我们
想当作单独的元素。
但是，我们必须做的是，我们不得不 基本上创建一个单独的整数
变量是计数每 一次，我们通过循环去了。
然后，我们就必须再调用 的strstr [我]当我们真正想做的事
刚去的性格 按字符，对不对？
我们不希望增加的 整数，然后使用该整数
访问每一个字符。
我们真正想要的字符一个字符。
>> 所以，每个智能 计算，对我们来说。
如果我们有一个数组，其中 我们可以在PHP声明
作为just--如果我们有一个变量 所谓的，让我们称之为数组。
不用打字的奇迹，这是 就像任何其他变量。
这只是一个数组。
我们有一点点[听不清]像1， 2，3，只是一种初始化数组。
这是确定的，它不喜欢我的foreach。
>> 但是，如果我们foreach--实际上 我输入了一个有点不对劲。
有两种方法可以做到foreach循环。
还有的在语法和作为语法。
而我们要做的 首先在语法，还不如。
这是我的错误。
>> 在阵列所以的foreach NUM，回声NUM。
而PHP吼 我出于某种原因。
它的发现一个意想不到的 在东西，
这是一个麻烦一点点。
但是，我们会找出 这是为什么在某一时刻。
所以不喜欢这样。
让我们尝试使用的。
它更喜欢的语法似乎。
因此，让我们做的foreach阵列为num。
>> 那么一点点的解释 对刚刚发生了什么
是因为语法saying--那么首先， 让我们来看看这是什么打印出来。
因此，我们打开我们的IDE。
我们去这里。
我们说，你好杰森。
它做到了123，这是内容 我们创建了上面的数组。
>> 因此，在深入这个foreach循环， 我们有一个可变称为阵列
这是三个数的阵列。
然后，我们正在做的foreach 阵列为num，回声NUM。
而这更 直观的比对LOP。
我们说，对待每一个 事情的数组NUM中，
我要你给我的NUM。
而这也正是它在做什么。
>> PHP是计算的 当你说的foreach阵列，
而你处理的是一个数组，什么 你将要遍历
是在该阵列中的字符， 在该数组的整数，
是在该数组中的元素。
而且它让你存储 这些变量为num，
然后只输出NUM 马上而不是说，
我有一个叫我的变量， 那么我想输出的strstr [1]。
>> 所以，让我们做很酷的事情。
基本上一样，我们没有创造 这些变量像我的，并尽一切
这个增量的东西在最后。
PHP需要照顾所有这一切为您。
>> 所以，现在让我们来谈谈的foreach作为 它适用于我们_GET字典。
因此，我们将快速地注释了这一点。
因此，我们有我们的_GET数组。
我们有这个变量。
而且它有它的一些东西。
>> 现在，我们只有一个变量 被传递到它，这是名称。
但是，如果我们按Enter键，现在 我们可以有两个变量。
我们可以有姓名和年龄，例如， 如果我们想获得的年龄，也
一个人的名字，有趣的是。
>> 所以，现在_GET将是一个 字典中有两个元素，
有两个关键值对。
而第一key--我要去 写这篇文章一上来就板了。
我们有我们的字典是_GET。
对不起，这是一个有点难以看到。
但是我们的字典里面，我们有 名字，这将是什么
我们正在给定的。
我们将有年龄，这也是 将是我们正在思考的东西。
这就是整体 我们的字典中。
>> 所以它有它的两个元素。
所以，因为的foreach 循环是聪明的，我们
可能会认为，正确 可能会认为的foreach
可以通过这个迭代 字典，打印出
给出姓名和年龄的值。
>> 因此，让我们其实做到这一点。
让我们构造一个foreach循环。
而我们要做的_GET的。
而我们要做到以下几点。
因此，让我们看看如果我们输入会发生什么 只是字，然后说回声字。
我们也将呼应新行 这只是为了更清晰一点，
这是怎么回事。
>> 所以，让我们来看看。
它没有给我任何错误。
我们将关闭此。
在我们的网站，你会做 很多，超过pset7的过程。
所以我们说我的名字叫萨姆。
我的年龄是45。
不是。
但它打印出来，符合市场预期，萨姆45。
>> 所以你会发现， 什么foreach循环在这里did--，
让我们回到那个，所以它的 在board--我们得到_GET的字。
并有四样东西在_GET。
但只打印出两件事情。
的foreach，是其智能的自我， 假设我们真正想要的
是数值，而不是键。
>> 但有一种方式，我们可以打印 出键为好，如果我们想。
如果我们想也知道是什么 这些变量被称为，
有一个办法，我们 可以访问这一点。
而方式排序做到这一点， 所以我们可以说，让我们真正
它拆分成键值对。
让我们看看现在发生了什么。
>> 因此，我们有钥匙。
我们的价值。
我们有另一个新 行以提高可读性。
让我们看看会发生什么 当我们这样做了。
我不知道贾森有多老。
Jason的15。
因此，我们有名字杰森，15岁。
所以我们能够访问该键 和值对本词典
刚才说的关键点值。
这就是一个foreach语法 糖位，使
您访问在字典中的东西。
>> 因此，希望这种强调 foreach循环的力量。
你几乎可以扔 事情，似乎可迭代的，
像什么，有多个 像数组中的元素，
像dictionary--这是两个 你将要使用的主要的事情
无论是在生活和PSET 7。
所以，你可以扔的东西 它，它会找出
你想用它做什么。
它会说，好吧，我会得到 这些东西从数据
传递给我。
而这，你是什么 要在PSET 7使用了很多。
>> 我要快速滚动 下来正好看到我在哪里。
人们是否有在这一点上的问题？
在所有的问题吗？
是？
>> 听众：所以与键和值， 你能说出它什么都重要
它仍然工作？
演讲嘉宾：哎呀。
哇，我完全删除整条生产线。
做得好。
所以，一个。
键和值仅仅是一个惯例。
这是有帮助的。
你会得到一些设计 点，也许有些造型加分
这样做，因为这 真正传达的意图。
但是，我们说和y​​arp。
>> 听众：你不必 在HTML文件中改变什么
为了反映？
演讲嘉宾：不是。
听众：它只是知道 因为等于更大的than--
演讲嘉宾：是的。
听众：那that's-- --that指标
演讲嘉宾：是的。
这是一个foreach语法，惟命是从。
>> 听众：有没有类型。
所以，如果你想要的是什么 年龄只是一个数字？
有没有办法做到这一点？
>> 演讲嘉宾：有办法检查 变量符合一定的类型。
所以PHP请求从多一点 你因为没有类型研究。
某些方面，它要求较少。
在某些方面，它要求更多。
因为如果你刚 东西在变，
你不知道它是什么类型。
但是，如果你是聪明的变量 您分配类型，并确保
该功能仅re​​turn--您 要功能只返回
一种类型的值，以便 你基本上可以
预计该变量你回来 从函数将是类型
你觉得会，基本上是这样。
>> 但也有一些方法 通过它，你可以检查。
我不记得他们 从我的头顶。
我等着它变成蓝色。
isint？
ISSTR？
有方法 内置入PHP可以
检查你的变量的类型。
但是，如果您分配变量 聪明，你不应该
要做到这一点太多PSET 7。
但这些方法确实存在。
而这件事情， 在语言本身。
我不记得确切的语法。
我们甚至可以查找。
但是，时间是至关重要的。
有没有任何其他人 有什么问题吗？
是。
>> 听众：我只有一个了。
所以你提到的GET方法，但 你没有提到的POST方法。
难道我们回来了吗？
>> 演讲嘉宾：是的，我们将 可回来了。
这正是我一直在寻找 在我的电话，现在睡着了，
但我会找到的。
只是确保我们打 所有的PHP笔记。
是的，没有调试版本。
是的，我们有一些更多的东西， 我们现在要做到这一点。
>> 因此，谈到POST， 你所提到的，
唯一的区别 之间的GET和POST是
该记得，当我们看着 在此URL，我们看到，哦，
名等于和年龄等于yarp 是正确的网址为我们那里。
POST是多了几分神秘的 其传递的信息。
>> 所以，如果你不想用户 要知道，比如说你
不想用户名 和该人的口令
当前登录到显示在 的URL，这是一个合理的事
到不希望在URL， 因为对方能看到它。
如果有人链接到一个网页，你 不希望自己的网址贴满了那里，
因为这将让人们登录 只是一个URL的粘贴，而不是
实际上填写表格。
POST是有点更隐秘。
>> 而唯一的东西， 我们必须改变
此方法，改变 从得到张贴。
然后在HTTP里面，而不是 访问阵列_GET的，
我们要访问阵列_POST。
>> 我们会发现，如果 我们打​​开这再度回升，
杰森缓慢下降的年龄。
杰森的名字，14岁。
同样的东西弹出。
但我们去的网址， 这些变量不存在。
>> 而方式POST passes--所以要记住
如何看待一个页面的源代码。
我们去到网络。
我们刷新。
这是另一件事， POST将要给大家介绍的警告。
你可能已经看到了一个箱子，一个文本 盒这样的浏览器。
你确定你想 再次发送的一种形式？
POST是的发送这些表格。
>> 因为基本上，如果你发送的 信用卡信息的人，
这不是要显示在URL。
这将是一个POST请求。
所以，当你刷新页面， 它重新发送POST请求。
所以，现在我们确实想发送 再次形成，因为它不会
创建任何重复购买。
>> 我们会发现，到这里， 我们使用的方法是POST。
它确实传输字节。
它转移其中的401。
计划漂亮的渺小。
但是，没有什么地方，我们可以看到 正在传递的值。
该网页本身可以看出， 但我们作为用户不能够看到，
除非你是一个黑客。
如果你是一个优秀的黑客，你可以看看。
>> 如果你知道基本 在HTML格式，
该值将 自己在页面知。
你就可以看到。
该值将在那里，他们是 只是一个小的你不太明显
访问，基本上是这样。
>> 我们有更多的 有关GET，POST问题
before--就是我们接下来要做 实际上是看一些代码
那你给pset中7，说说 它如何使用这些概念，
而谈 东西，你会
有做的pset 7一点点。
在此之前，还有什么问题吗？
你们更多的问题有哪些？
大。
>> 好吧，让我们来看看 在PSET 7一点点，
毫无疑问，你是什么 所有最激动的。
我的意思是，这是一件 大卫经过一点点。
但是，我们必须在三个目录 顶部，以及一个配置文件。
这对数据库，我们将 在大约五分钟谈。
包括，你永远需要 看此目录中
如果你不想，但它是很好的 知道有各种各样的帮手。
助手就像是有帮助的功能。
然后我们有配置， 其中设置一些东西了。
>> 有一些功能CS50具有 撰文指出，在助手和配置。
而一些PHP的那 已经存在的文件
会做很多更几分 为您的钝专家组的工作。
就像如果我们进入公众 的login.php，这是什么
显示了权当你进入PSET 7。
我们会看到有 这需要声明。
这有点像 犀利包括，包括hashtag
包括如果你是一个新的一代。
但是，这基本上 说我需要访问
要在config.php所有功能。
你可以有一个要求 对于各种各样的其他东西。
>> 配置实际上需要帮手。
所以每当你需要 配置，你也
其中，也不需要助手为好。
这样，您可以访问所有的 很酷的功能，我们要使用，
事情喜欢渲染。
实际上，我来缓解 下来一点点。
所以，函数，那么我们是 要穿行
就在我们移动到SQL一点 位是login.php中的功能，只是
因为它使用的一些话题 我们刚才谈到了PHP。
>> 你看到的第一件事情是，如果$ _ SERVER。
这又是一个全局变量， 你将要处理。
这就像_GET和_POST，但什么 服务器包含在这可以让你
知道如果请求方法 是一个GET或POST的。
就像以前我们在做什么 就在我们的代码，我们写的，
我们只是改变它是GET和 POST取决于什么HTML有。
但也有可能的页面 与这两种类型的请求访问。
你可能想要做的 根据不同的事情
上的请求的类型， 就像登录一样。
>> 所以，你可以检查的要求 通过访问密钥的方法，
通过使用键和获取 东西在字典中的价值
_服务器。
所以这是另一次全球 变像_GET和_POST。
>> 如果我们得到，我们要 呈现登录表单。
渲染是一个函数，基本上 刚搭设相应的HTML
并将其传递一些参数。
这个称号是一个参数，它是 在显示，奇怪的是使用，
网页中的标题 问题的东西在这里，
说还是招呼我们上面的例子。
现在我们有一个不同的东西。
否则，如果它的文章中，我们 做一些其他的东西。
我们使用的空方法。
它是不存在的，它是空的。
而且我们看到之前，PHP 有建相当数量的
在方法大卫will--如果有 是那些对你有用的方法，
他们会提醒你 通过大卫走
给出一开始概述， 也Zamyla的有益位。
她回来了每一个人。
我们都感到欢欣鼓舞。
道歉是适当命名的功能 这基本上只是打印出
一些错误消息， 因为CS50很有礼貌。
>> 而现在这个，这是一个 因为这有点棘手
在这里我们要查询数据库。
现在，我们还没有谈到数据库。
而我们将在接下来的 五分钟左右，最大。
但是，这是一个函数 这CS50写
从数据库获取表基本 我们正在pset中7个有。
我真的很糟糕我 零索引今天。
但是，是的，这是7。
>> 因此，查询它会返回一个 阵列，主要是键位。
而且因为这些东西没有 打字，所以行是一个数组的数组。
因为当我们正在考虑 一个表，我们将做什么
是，当你在pset中了解到 喜欢游戏的15，反正
在这里你不得不使用 双阵列，我们基本上
还有其他的数组 阵列来生成表。
而且你有行和列。
然后你就可以访问它们像 [0] [1]，你得到的[0] [1]。
基本的东西一样。
>> 所以，我们在做什么 这里在此功能，
我们要求数据库 如果用户那
试图登录，这将是 通过POST方法发送。
我们会看到我们得到 用户名从彦博。
他们将有发送，用户 或者你会送一个价值
穿过POST一个形式，因为 它的用户名和密码的东西。
我们正在检查用户名 看，这是在表中？
因为，如果用户正在记录 在，那么他们的用户名
应存储在的表 存在此网站的用户。
所以基本上，如果 用户是在数据库中，
查询是否会返回 该行，这是一个数组。
>> 但棘手的问题是，如果即使 双阵列只有一行，
即使它是一个行array-- 就像你有basically--
如果你有一个大小为一数组 这是抱着另一个数组，
你真的处理的一列。
但它仍然是处理 就像一个双阵列。
>> 而这正是它有时可以得到 棘手的，因为现在我们得到的行。
我们的变量行。
然后我们要创建 一个新的变量叫做行
并将其设置等于 行的第一行。
而且你会发现，意见 说，这是第一个也是唯一的行。
>> 因此，这是很棘手 部分在哪里，现在功能
可以返回数组非常容易。
这里没有mallocs。
你不会看到mallocs。
所以你不会看到赛格故障。
但是功能仍然会通过 围绕阵列和数据分组。
而且你必须要警惕的是什么 正是你的函数将返回。
即使它的One 类似这样的专栏，查询
仍然会返回一个双阵列。
因此，要访问该column--或者您 能想到这一切作为倒
因为我们正在谈论的行。
但访问一行， 你不能只是说行。
即使是一排，你必须 样的不rowsrows [0]来消除这种
阵列的外位和 刚才你一行。
>> 做一些其他的事情。
有一个函数 所谓password_verify
这验证 密码被张贴。
然后，我们看到另一个全球 可变这里，_SESSION。
基本会话ID 你是怎么保持跟踪
如果有人登录与否。
所以现在用的login.php， 我们正在登录的用户。
所以我们想要做的是我们要 说会话ID是等于行
ID，这很有道理，因为 每一行都会有不同的ID
号作为表的一部分。
我们将进入SQL中 第二，因此，如果任何的这
似乎是胡说一点点， 那么一切都将被清除了。
但是，我们要设置id等于 正确的事情，登录用户。
很抱歉，如果有什么差错。
这是在登录的目的 生活马兰教授会说。
>> 所以这是的login.php。
和很多你写的PHP代码 在PSET 7，他们会一点点。
不要忘记chmod命令 适当的权限。
将有大约一点点 在规格中的开头。
>> 但是，你的PHP 写入将是
做的东西，这与此类似。
你会成为 访问一些事情，
在是给你 PHP的全局变量
正在处理当前 登录的用户，是否有
有发送到这个被请求 页上，这样的不同的东西。
它也将是潜在的 迭代通过行的这件事情。
>> 在一个不同的功能，查询 不会返回这双阵列。
如果有更多的 比中已有一个行，
如果有are--是，如果有 在它超过一个的行，
那么这将是一个表。
你可能要遍历 在这个数组中使用的行
我们描述的foreach循环。
>> 所以，如果你做的foreach上双 阵列，会出现什么word--在这里，
我其实写。
我会写它很快在这里。
>> 如果我们有行一个foreach 为行，什么是行的类型？
有谁知道？
你说对了？
因此，行是一个双阵列。
那么，什么是的foreach去推断 我们从该双阵列希望
如果我们遍历了吗？
我们基本可以假定， 这将是两种元素，
或行或列，基本上是这样。
所以行和列的我们 可以当作一回事。
>> 基本上什么foreach循环是怎么回事 做的是它会返回行。
行会是类型行的， 而行是一个双阵列。
所以，如果你给的foreach 双阵列，它的
不会迭代 不止一层。
这基本上是，如果说有 八个细胞在这个table-- 1,2，
3 4，5，6，7，8-所述 foreach循环不
要去通过每个这些细胞。
什么foreach循环会做 是它会经过此行，
给你这个整行。
然后它会通过该行。
>> 因此，它只能迭代一层。
如果添加了嵌套 foreach循环，那么你
可以把从返回的每一行 行，你做的foreach行作为元素，
比如说。
然后你可以呼应的元素。
所以这是一个简单的 如何少进修
你可能会使用的foreach 循环中的查询的上下文。
>> 是否有关于PHP什么问题？
任何事情之前都我们 转移到谈论的SQL
和数据库的乐趣？
感觉不错？
感觉不错。
好吧。
>> 让我们在回移到 PowerPoint中，您可能会错过。
SQL，耶。
人们谁是我的部分典型 就知道缩略词的副标题
永远只是第一个字 我认为，比赛的
算法 - 这首字母缩写。
这不是一种算法。
>> 因此，SQL是一种数据库。
它是一种语言， 适用于数据库。
并且所有数据库都为 表，至少在方式
该SQL代表他们。
>> 另一种方式来思考数据库是 数据库是一组键和值
基本上。
你可以想想一个数据库 一个词典，也可以作为表。
基本上这是一个方法，关联 不同的数据与其他数据，
常常通过行和列。
这就是方式 这是SQL效果最好。
>> 因此，这是一个表的一个例子。
我有几个例子 人在我的部分，它
我没有时间来改变。
但是，我们已经有了像ID， 名，超级大国，和家乡。
我不知道任何人的 从我的部分，
所以我只是要承担 每个人从纽约
市，因为我有很高的统计学 可能性是正确的。
>> SQL会自动取 关心你的ID列。
如果您插入新行 成一个SQL数据库，
这将增加的 ID号和刚
基本上坚持到五的名字， 超级大国的故乡，谁就
到该表的末端。
所以，ID是一列，你会 永远不用担心。
但是，像在的情况下 login.php中，当我们
都拿到会话ID 从表中，只是用ID，
ID是一种方法，唯一地标识 一个数据库中的一个元素。
>> 因此，如果我们有两个萨姆斯，两者的 这本书教会了CS50，以及两者的谁
来自密尔沃基，那些会 还是有不同的ID号
因而是不同的 表中的情况下。
因此，这是SQL正在处理 有，在后端工作。
>> 现在，这些都是四个命令 ，你需要使用SQL工作。
而我把它们全部在一个幻灯片。
但是，我们要经过 他们都分别。
>> 第一个命令是UPDATE， 这不，你可能期望。
说你有一些数据 该表是过时了。
如果你保存像 赛道人的名字
和年龄，如果谁家 年龄的增长，那么
你会想进去， 更新只是人的年龄。
对于工作的例子 我们的第一个table--
不用担心写的是 这些命令在同一时间。
但是，如果你有更新了， 这将有利于这部分，
因为我们要 回到表。
>> 因此，如果我们回到桌子上， 比方说，事情发生
在发生地震或 断层线直接拆分
通过纽约市。
我们想更新大家 谁住在纽约市。
他们都不得不搬到宾夕法尼亚州。
这不是一个故乡。
他们都不得不搬到纽黑文。
在那里，我们走了。
所以每个人都在纽约 移动到纽黑文。
>> 而这样的东西，是 编辑该表中三行。
但在SQL中，你可以做 在短短一个语句。
因此，我们重新更新。
让我再次快速擦除这款主板。
当我们谈论 更新，有
一些部件是关键的语法。
好了，所有的语法是关键。
但在绿色的东西是可选的。
白是必需的， 像预定义的名字。
而淡蓝色的事情 根据表而变化。
所以，这就是同回事 配色方案在这里，那里。
>> 因此，如果我们要更新只是那些行 谁住在纽约的人，
所以我们想，如果我们说的更新呢？
因此，表是我们放 我们的表的名称。
远的不说名字 我们的表是表中的一个。
因此，我们要更新表之一。
我们要set-- 我们需要什么设置？
好了，我们想说的是，这么column-- PHP 把行作为唯一标识符。
然后列 不同领域
的数据库的那些元件。
>> 这样的数据库的第一元件 有山，CS50的超级大国的名字，
和雄鹿的故乡。
所以如果我们所说的设置，让我们来看看 再参数设定需要。
我们有列等于价值。
因此，我们要说出一些 column--这记
是field--我们希望看到一个 字段等于新的东西。
>> 因此，如果我们刚才说的更新 表1，设置名称等于艾略特。
得到一些人的 在这个新的章节。
但是，如果我们只是做了更新表1 集名称相同艾略特，会是什么
该表的样子之后呢？
人们有什么想法？
是啊。
>> 听众：一切都在那 行会成为埃利奥特。
演讲嘉宾：这行的一切吗？
听众：在第一行中。
扬声器：在第一行？
为什么第一排？
我不是说要接你。
>> 听众：也许一切 在整个表？
演讲嘉宾：一切 整个表，是的。
这是完全正确的因为 - 我 刚刚帮你出一点点
那里 - 因为我们忽略 可选的WHERE子句。
如果你没有在WHERE 条款，这是什么命令会做
是它会与每 在表中的一行。
每个人的名字将 成为埃利奥特，基本上，
这艾略特是非常高兴的事情。
或雅尼，两个中的一个。
但是，每个人的名字会发生变化。
>> 所以这样我们使用WHERE clause-- 这适用于所有何在的
这是在每个 这些不同的东西。
所以，你会发现，SET 有列同等价值。
所以呢在哪里。
但这些不同的 类型的语句。
因此，列等于值 在SET中分配。
就像我们说我们要 设置名称等于埃利奥特。
但在WHERE子句， 这些都是平等的陈述。
所以我们可以说，我们只是想 改变人的名字埃利奥特
如果他们的名字是瑞恩，让我们说。
>> 所以，当我们说
>> 其中name等于瑞安，那 成功将唯一的变化
在name--那只 改变行的名称字段
其中名称字段等于瑞安。
所以，如果我们有多人 名为瑞安，他们所有的名字
将改变埃利奥特。
>> 这是类似于实施例 如果断层线分裂
纽约市和每个人都有 搬到纽黑文，一路上我们可以
这样做，在一个语句是UPDATE 表1 SET家乡=纽黑文
其中，故乡相当于纽约市。
这是功率 UPDATE语句。
我们可以选择任意数量的 通过真实的陈述行
关于在那些行中的字段。
我们不能说UPDATE表1集 名称=埃利奥特其中row = 1，
不同之处在于，我们可以的，如果我们说的ID = 1。
>> 因此，我们将要 平等合作
字段，列平等。
但使用ID字段是一种能够 选择单个行具体而言，
因为ID字段是一个唯一的 标识符在SQL数据库中。
因此，如更新一行，ID等于1。
更新两排，只 改变该ID号。
但是的力量 WHERE语句是我们
可以基于什么东西更新其 对某些事物的电流值。
是艾略特？
>> 听众：如果你想用于：什么 再次，这是另外一个问题。
但我的第一个问题是， 其中，出现这样的情况？
我在哪里升级呢？
这是在一个PHP代码？
>> 演讲嘉宾：你在哪里更新，是的。
我们要谈 在哪里这一切
发生那种一旦我们去 通过所有的命令。
但是，你需要什么 知道现在基本上
您的SQL数据库 存在的东西
到由查询来访问 功能，这CS50定义。
如果你使用的查询功能，因此， 你可以访问此表。
>> 所以，你会发送这些 命令你的表中的PHP文件
通过查询功能。
您也可以玩 与你的表直接。
这就是以最好的方式 测试这类命令。
我们将经历究竟如何 要做到这一点的只是一点点。
>> 所以这是UPDATE命令。
和命令的其余 将要排序相似，
从事类似的事情。
在INSERT INTO可能 最不同的更新。
我要离开了那里的 只是一点点和工作在这里。
所以INSERT INTO，你会看到 该表仍然是相同的。
你想插入到。
资本化，SQL 不区分大小写。
所以，你不必 利用这些东西。
按照惯例，词语 白色予以资本化。
但我也颜色编码他们。
你利用的唯一原因 这些，当你键入它们
只是强调 这些是常数。
所以你可以看一下 资本或事实
我已经不同颜色的他们。
>> 所以，我们已经有了INSERT INTO， 让我们再来一次表1。
这是所有在一行上。
我只是通过分离其 不同的语句。
所以，不要担心的是， 表1使它到第二行。
>> 因此，我们要插入 INTO表1中的值。
你会发现可选 位，我会在第二。
因此，我们已经得到了价值观。
>> 所以我们可以说，我们要添加安迪 我们的表，因为我们错过安迪。
安迪生病。
因此，让我们加入安迪到我们的餐桌。
请记住，ID号 自动更新。
因此，唯一的领域，我们 需要担心
包括名称，超级大国，和家乡。
>> 所以我们这样做的方式， 看着我们的语法，是我们
只是得到了括号，用逗号 分隔值，其中每一个
是一个值。
因此，如果我们想安迪插入到我们的 表中，我们所要做的就是正确的安迪。
什么是安迪的超级大国， 人们在安迪的部分？
她喜欢飞行，还是喜欢 速度，什么的。
什么是我们已经在那里？
我们有CS50，飞行， 速度和力量。
>> 听众：时间旅行。
>> 演讲嘉宾：时间旅行，令人叹为观止。
因此，我们已经得到了安迪，时间 旅游，和她的家乡。
这是一个非常好的问题。
纽约市，除非有人知道。
每个人都是从纽约的 教训从今天带走。
>> 所以，这种说法会 插入，作为第五行，
与超级大国时间旅行 和纽约市的故乡。
但可选字段 基本上是一个方式
准确指定哪些列 要插入的东西研究。
>> 我们正在做它现在的样子， 岸堤，时间旅行，纽约市，
打算在的确切顺序我们 table--名称，超级大国的家乡。
如果你想做的事 东西以外，
好比说，你不知道 别人的超级大国，
像我怎么不知道安迪的 超级大国开头。
所以，我只知道她 的名字和她的故乡。
我能做的就是我可以 do--我会删除这个快速。
>> 我想只更新列。
而这正是可选 列清单的用武之地。
我只是想更新的名字和家乡。
然后我会说价值观。
我会做安迪和纽约市。
>> 如果我忽略列的列表 而刚刚做这两件事，
其中，将纽约市都到哪里去了？
这列将纽约 市被放置在？
人们有什么想法？
超级大国，没错。
>> 因此，这将刚进去的顺序。
而一旦它到达的结束 列表，它会只停留填充物研究。
而价值观，它会坚持在 所有列也只是空。
所以，因为我们规定 名字和家乡，
我们将有ID 5， 安迪的名字，超级大国空。
所以超级大国是未初始化值。
你不一定会得到 如果你尝试相同的Valgrind的错误
并访问它。
一切都将被很好地归零 出来，因为NULL是SQL中的价值。
这是一个常数。
然后，家乡将纽约市。
所以这是INSERT INTO命令。
在我们继续之前，有 两个命令。
人们是否有任何问题， UPDATE，关于INSERT INTO，有关SQL
一般在我们继续之前 到我们最后的位？
人们感觉很好，很棒。
爱它。
因此，让我们来谈谈选择。
去沟更新在这里。
>> 并选择将是非常相似的。
选择的目标， 在人生选择的目的
就是给你一堆列 满足一定的条件。
当我说满意 某些条件下，
你的心可能会立即 回到那个WHERE子句
在UPDATE上来。
这子句 正是有在SELECT。
>> 如果我们不把WHERE 条款和我们说选择名称，
hometown--拼了一点点 wrong--名字，家乡FROM表1。
如果我们只是说，有什么选择 是想给我们的是它的
要给我们 double--一个表，而。
双数组，如果我们 想在PHP检测。
但它只是要给我们 两个columns--名双阵列，
和家乡。
它会忽略ID。
它会忽略超级大国。
而且它会只给我们每一个 该表中单列。
因此，如果我们只是插入 岸堤，我们将有安迪。
我们将有原四。
如果他们一直在更新，这将 被反射，等等，等等。
>> 因此，这是因为我们 没有使用WHERE子句。
但是，我们可以在完全使用 同样，我们用它在更新。
如果我们只希望名表 与人超能力的生活
在纽约，我们可以执行一个语句 像选择名称，superpower--
我只是要离开that-- FROM 表1 WHERE家乡=纽约市。
>> 因此，这正好说明，你可以 得到完全不同的列，
然后把列，你是不是 即使取回WHERE子句。
我们甚至不希望 故乡大家。
但是，我们希望的名称和 人们的超级大国
他的家乡纽约市。
所以，这是我们 可以用在何处？
子句，我们可以列处理 我们不一定要回去。
在UPDATE同样的方法，我们就可以处理 与列，我们不一定
要进行更新。
我们可以更新这个城市所有人的 谁的名字是山姆，例如。
我们可以更新的城市 每个人的ID号为2。
所以才更新 市第二排
在这里，我们没有处理 必要时常见的问题。
>> 和删除的，因为你会 预计，DELETE FROM表1。
然后我们有另外一个WHERE子句。
所以我们可以说WHERE ID = 1。
删除的第一行。
并删除将始终删除行， 或者，将删除的行的一些数。
DELETE FROM表WHERE 家乡=纽约市
将删除每个人都在纽约市。
这就是，如果有一个 突如其来的悲剧瘟疫
而你只是想删除 大家从表中谁
生活在某个城市 被击中的瘟疫。
愿他们安息。
>> 这些是四个SQL命令 你将需要使用。
你甚至不需要使用它们。
但这些都是四 这CS50希望你
是舒适与进入 这两个测验1，也pset7和pset8。
>> 这里只是表了。
在这其中，罗伊的超级大国 被更新，以激光束，它
是一个例子，我没有使用。
我不知道哪一个 罗伊喜欢，而是实力。
罗伊有实力的超级大国。
凯瑟琳没能成功的今天。
那真不幸。
但她具有超强的速度。
>> 嗯，这是PHP。
在我们讨论MVC，不 任何人有关于PHP的问题？
现在SQL或PHP，如果你突然有 拿出一个关于PHP的问题？
大。
好吧，我们都设置即可。
>> 所以说话有点 关于模型视图控制器，
让我们回到一些 在pset7的东西。
那么，什么模型视图 控制器is--我不是
要救我的修改登录 因为我完全屠杀了。
但基本上我们有两个 独立的东西怎么回事。
我们有一个公开 目录中包含
代码，那将被执行 并且，将要访问的网页。
而且我们也有这个意见的目录。
和视图中包含的模板。
>> 这就是功能 render--我们看到了渲染
在一堆的PHP代码的功能 这CS50已经为你写的，
该取入某些参数。
什么代码正在做 在它进入的观点，
这是一组像 预写HTML代码，
和它的插入值 到某些地方。
这就是当你 进入CS50金融，
相同的标题是每一个页面上。
同样的页脚是在每一页上。
这是因为这样 这使得作品是它会
在头自动修补和 浏览器，你可以在视图中找到。
>> 事实上，我们可以进入标题， 看起来，这是一个头的HTML文件。
它有一些样式表。
你并不需要看的CSS 为pset7，如果你不想。
但是你可以修改 他们，如果你想，做
您的财务看起来有些不同。
>> 它有一些PHP的 头有点看
如果有一个不同的标题 应该把这个头。
但只是一些其他脚本， 和链接，和其他的东西。
头端，身体开始，并哎呀， 我们有这个古灵精怪的小端位。
而且还有一个div，就像 一个无形的元素种类
这中间有一个想法。
>> 然后，当我们看到尾， 我们有一个div的末端。
我们有一个底部，这是 其中页脚文本。
结束DIV，身体结束，HTML月底。
>> 那么，什么渲染是 做的是呈现几分
修修补补的头，一 不同的PHP文件
将包含实际的东西， 你会看到，像你的股票的表
如果你是购买或出售股票。
然后，它会添加在页脚。
而模型视图 控制器的想法是，我们
要分开怎么样 事情看起来从代码。
这是我们要分开的前端 和后端，其中，前端为
用户可以看到的东西，漂亮的 visuals-- HTML，CSS，这样的事情，
图像，等等。
而后端PHP。
这是你写的代码。
这是其中的代码那 这样做的实际行动。
这是当你添加 一只股票你的表，
当你买进 销售，这是后台。
>> 我们可以，就像你看到的， 直接包括PHP在HTML中。
因此，我们可能会对做 这种指派刚
对于每一页的HTML文件，像登录。
然后在该网页上，只 有PHP代码巨大的块，
包括所有的代码是 该网页特别需要。
然后，我们可以有 做到这一点的投资组合。
我们可以做所有的买盘 和销售的各个页面中。
>> 但是，因为我们正在绘制 分别从哪儿
我们正在编写后台 代码中，我们可以很容易地
改变的事情怎么看不 改变每一个文件。
我们做这样的事情只是添加 一个新的div底部
of--你好，我修改了脚注。
你可以做类似的东西。
但同时，你可以改变 整个视觉布局
在不影响什么 要在后端。
你可以改变 整个后端，仍然
有它看起来就像以前那样。
本
>> 是模型视图控制器的想法。
它实际上是一种强加的范例 在一些编程语言
你可能想使用 最终项目。
如果你这样做iOS开发， 他们有意见，
这是你在​​iPhone上看到的， 那么后端的像一个独立的东西。
>> 你可以想想一点点。
有很多的二进制文件的 计算机科学，这是有趣的，
因为一切都在二进制。
我不打算说。
这是一个双关语意外。
是的，双关语并非意。
>> 但是，像.h文件和.c文件，有 很多东西分离的，我们
可能不需要。
因此，我们可以只修改的H文件，或 有人可以只看到.h文件，知道
正是在该功能 而不一定知道.c文件
其执行情况。
分离成分的这种想法 依赖于彼此
但那种互相访问 通过不同的渠道，传递
的变量，只 包括陈述，事情
这样，这一原则 有助于创造应用
这可以更容易地 由多人编辑，
可更容易地改变 或修改的规模很大，
和更容易 调试在很多方面。
>> 真快，我有 对于pset7的一些技巧，
我将充分屏幕，所以你不 只看the--窍门TIPPEE。
有没有那么多的技巧。
>> 但我提到的PHP是难以调试。
双重和三重检查。
如果你的代码是不 显示在页面上，
它可能是一个PHP的错误，对不起。
>> 你永远需要看看 如果你不想CSS。
但是，一旦你完成，也可以是 一个可爱的小有趣的事情，只是去
和乱用CSS的参数。
CSS和HTML是一模型的一个例子 视图控制器风格的事情太多了吧？
你可以有风格的标签 在HTML元素。
但是，如果你的排序 它们外包给CSS，
它们更容易编辑和播放 周围，​​并有乐趣。
>> 治疗CS50帮手 作为黑盒子。
不需要知道 正是渲染在做什么，
但相信它总是做正确的 这取决于你传递的东西，
这样的事情。
我会推荐 看大卫的演练，
经历所有的 的东西，而不仅仅是待办事项，
但你真的能治疗 这些黑盒子。
不要进入这些 功能寻找漏洞。
>> 并欢迎回报 我们的霸主Zamyla。
大。
>> 是否有之前的任何最终的问题 那种我们反弹的一天？
我仍然活着？
大。
嗨livestream人。
大。
是否存在了问题吗？
没有？
>> 然后，我想我们 好走的今天。
我会坚持围绕一点点 之后，如果人们有问题
他们也不敢问在流。
但除此之外，有一个美好的一天。