>> [音樂播放]
道格·勞埃德：在我們的視頻 關於Web開發的話題，
我們已經提到的概念 數據庫幾次，對不對？
所以數據庫你 可能是熟悉的
說使用Microsoft Excel 或谷歌電子表格。
它實際上只是一個有組織的 設置表，行和列。
>> 而數據庫是哪裡 我們的網站商店
這一點很重要信息 為我們的網站能正常工作。
此外，一個非常常見的例子在這裡 在存儲用戶名和密碼
在數據庫中，使得當 用戶登錄到我們的網站，
該數據庫可被查詢，看 如果該用戶在數據庫中存在。
如果是這樣，檢查 他們的密碼是正確的。
而如果他們的密碼是正確的， 那麼，我們可以給他們任何網頁
他們請求。
>> 所以，你很可能再次熟悉 這個想法從Excel或谷歌
電子表格。
我們有數據庫， 表，行和列。
這就是真正的排序 基本集
這裡分層分解。
因此，這裡的Excel電子表格。
如果你曾經開了這 或其他類似的程序
你知道，這些這裡有 rows-- 1，2，3，4，5，6，7。
這些都是列。
>> 也許到這裡，雖然你可能 不使用此功能非常much--
我會放大in--我們 這一想法的片材。
因此，也許這些表，如果 我交替往復，
不同的表 存在於我的數據庫。
如果我們繼續這個例子所有 順便說一下，這個數據庫的名稱
是書1。
也許我有第二冊和第三冊。
所以，每一個Excel文件是一個 數據庫中，每個片是一個表，
每個表格裡面我有 這一想法的行和列。
>> 那麼，如何使用這個數據庫的工作？
我如何獲得它的信息？
那麼有一個叫做語言SQL-- 我通常只是打電話Sequel--
它代表的是 結構化查詢語言。
而且它是一種編程語言， 但它是一個相當有限編程
語言。
這不是很喜歡別人 我們已經合作過。
但這樣做的目的 程序設計語言
是查詢數據庫，以 問一個數據庫的信息​​，
找到一個信息 數據庫，等等。
>> 我們在CS50--這是一個非常 共同的平台，這就是所謂的MySQL。
這就是我們在使用過程中使用的。
這是一個開放源碼 平台建立
所謂關係型數據庫 - 一個數據庫，有效。
我們並不需要得到 太多細節
對什麼是關係數據庫。
但是，SQL語言 非常善於工作
與MySQL和其它類似 樣式的關係數據庫。
>> 而很多的安裝 MySQL的來的東西
所謂的phpMyAdmin，這 是一個圖形用戶
interface--一個GUI--的 使得它多一點
用戶友好的執行 數據庫查詢，
因為數據庫不僅用於 由高級程​​序員，對嗎？
有時有 這些小企業，
他們無法承受 聘請程序員的團隊，
但他們仍然需要存儲 在數據庫中的信息。
>> 類似的phpMyAdmin 使得它很容易為別人
誰之前從未編程 拿起和熟悉如何
與數據庫一起工作。
問題是，phpMyAdmin的，而 這是一個奇妙的工具，學習
有關數據庫，它是手動的。
你將不得不登錄 它與執行命令和類型
事情手動研究。
>> 而且，因為我們知道我們的 例如PHP的Web編程，
有做手工 在我們的網站上的東西，
如果我們想要一個充滿活力，積極響應 網站，也許不是最好的方法。
我們希望找到一種方法， 也許是自動完成這一莫名其妙。
和SQL將使我們能夠做到這一點。
所以，當我們要 開始使用SQL工作，
我們首先需要有一個 數據庫一起工作。
創建一個數據庫 一些你可能
會做的phpMyAdmin的，因為 你只需要做一次，
和語法這樣做 很多更簡單。
這是一個更容易做到這一點 在圖形用戶界面
不是打字它作為一個命令。
該命令可能會變得有些繁瑣。
同樣，在創建一個表可以 得到相當有點麻煩，以及。
所以像創建數據庫 並創建一個表，你
大概只打算做once-- 每一次表，每一次數據庫 -
它是確定做，在 圖形界面。
在過程中 創建一個表，你會
還必須指定所有的 列，就可以在該表中。
什麼樣的信息做 要存儲在表中？
也許用戶的姓名和出生日期， 口令，用戶ID號，也許
城市和國家，對不對？
>> 而對於每一次我們要添加一個用戶 到數據庫中，我們希望得到所有六個
的這些信息。
同時，我們也通過添加 行到表。
因此，我們首先創建一個數據庫， 然後我們創建一個表。
作為創建的一部分 一個表中，我們被要求
指定每列 我們希望在此表中。
然後，當我們開始增加 信息到數據庫
和查詢數據庫的更多 generally--不僅僅是增加，
但一切我們 do--我們會處理
與行的表，這是一個 從整組用戶的信息。
>> 所以，每一個SQL列能夠 保持一個特定數據類型的數據。
因此，我們的排序消除了這種 在PHP中的數據類型的想法，
但他們回到這裡SQL。
而且有很多的數據類型。
這裡的只有20人，但 它甚至不是所有的人。
因此，我們有一些理念，如INTs-- Integers--我們大概知道
該列可以容納整數。
而有變化thereon-- SMALLINT，TINYINT，MEDIUMINT，BIGINT。
也許我們並不總是需要四個叮咬。
也許我們需要8個字節，所以我們 可以使用整數這些變化
要多一點空間，高效。
我們可以做的十進制數，我們 可以做浮點數。
這是非常相似的。
有一定的差異， 如果你願意
想查找 SQL排序指導，你
可以看到輕微 區別是它們之間。
>> 也許我們要存儲 關於日期和時間信息。
也許我們跟踪 當用戶加入了我們的網站，
所以，也許我們要 有一列的
日期時間或時間戳 表示當用戶實際上
報了名。
我們可以做的幾何形狀和線串。
這實際上是很酷。
我們可以繪製出 使用地理區域
GIS坐標繪製出的區域。
所以實際上可以存儲排序 在一個SQL列信息。
>> 文本是文本的只是巨大的斑點，也許。
枚舉是一種有趣的。
他們實際上存在於C.我們不 談論他們，因為他們不
非常常用，至少CS50。
但它是一個枚舉數據類型， 能夠保持限制值。
>> 一個真正很好的例子是 創建一個枚舉，其中七
可能的值是星期日，星期一， 週二，週三，週四，週五，
週六，對不對？
對這些數據類型的天 週不存在，
但我們可以創建一個 枚舉數據類型，
這列永遠只能容納 其中的一個七個可能的值。
我們列舉所有 的可能值。
>> 然後我們有CHAR和VARCHAR， 我已經上色這些綠色
因為我們實際上 要採取第二
談論的區別 這兩件事情之間。
所以CHAR，不像C，其中 CHAR是單個字符，
SQL中的CHAR指 一個固定長度的字符串。
而當我們創建這個 專欄中，我們實際上
可以指定字符串的長度。
>> 所以在這個例子中， 我們可以說CHAR（10）。
這意味著，每 該列的元件
將包括10字節的信息。
沒有更多，不會少。
因此，如果我們試圖把一個15 位或15字符元素
或值此列， 我們只拿到了前10。
如果我們把在兩 字符長的值，
我們將有兩個 字符，然後8空叮咬。
我們永遠不會比這更有效。
>> 一個varchar是一種像 我們一串概念
我們已經很熟悉 從C或從PHP。
這是一個可變長度的字符串。
當你創建 這個專欄中，你只要
指定的最大可能長度。
因此，也許99或通常255。
這將是最大長度。
所以，如果我們存儲 15文字串，
我們將使用15個字節，也許16 字節的空終止。
如果我們存儲 三個字符的字符串，
我們將使用三個或四個字節。
但是，我們不會使用完整的99。
>> 那麼，為什麼我們兼得？
那麼，如果我們需要弄清楚如何 長的東西是一個VARCHAR，
我們有一種迭代的 通過它就像我們用C做
並找出它停止。
而如果我們知道這一切 在此列是10個字節​​，也許
我們知道的信息，我們可以跳 10字節，10字節，10字節，10字節，
始終找不到了 開頭的字符串。
>> 因此，我們可能有一些 浪費的空間用CHAR，
但也許有一個貿易 關閉有更好的速度
在導航數據庫。
但也許我們想要的 VARCHAR類型的靈活性
而不是having--如果我們的CHAR 是255的，但我們的大多數用戶
只輸入三個或四個字節 的信息價值或三個或四個
字符的信息價值。
>> 但是，一些用戶使用 整個255，也許
VARCHAR會比較合適那裡。
這有點交易的關閉， 一般為了CS50的，
你不必太擔心 無論您使用的是CHAR或VARCHAR。
但在現實世界中，這些東西 做的事，因為所有這些列
佔用實際的物理空間。
和物理空間，在 現實世界中，是有溢價。
>> 所以有其他考慮 你建立一個表時，
是選擇一列是 什麼叫做一個主鍵。
和主鍵是一列 其中，每一個值是唯一的。
這意味著，你可以很容易地 挑選出的單行只是看
在該行的主鍵。
因此，例如，你 通常，與用戶，
不想讓兩個用戶誰 具有相同的用戶ID號。
所以，也許你有 大量的信息，
也許兩個用戶 具有相同的name--
你有約翰·史密斯和約翰·史密斯。
這不一定是一個問題， 因為有多人
在名為約翰·史密斯的世界。
但是，我們只有一個用戶ID號 10，一個用戶ID號11，12，13。
我們沒有兩個用戶 用相同的號碼，
所以也許用戶ID號 將是一個好主鍵。
>> 我們沒有任何重複， 我們現在可以唯一地
只是識別每一行 通過查看該列。
選擇主鍵實際上可以 進行後續表操作
輕鬆很多，因為你可以利用 一個事實，即某些行會
是唯一的，或者某些列 你的數據庫或表
將是唯一的挑 出特定的行。
>> 你也可以有一個聯合主 密鑰，你會發現機會
使用，這僅僅是一個 兩列的組合，其
保證是唯一的。
因此，也許你有一個 列的AS和B，
一列這是一個，兩個， 三，但你永遠只
有一個單一的A 1，單 A2，等等等等。
但是，你可能有一個B2，一 C 2，或A1，A2，A3，A4。
所以，你可能有多個如，多 燒烤，多的，多三三兩兩，
但你永遠只能有一個 單A1，B2，C3等。
所以，正如我所說的，SQL是一種 編程語言，
但它有一個相當有限的詞彙。
這是不是很廣闊的 C和PHP等語言
我們在談的過程中。
它是更詳細的一 語言比我們
要在此談談 視頻，因為在這個視頻
我們要談 四則運算我們
可以對表執行。
>> 還有比這更多。
我們可以做的比這更多， 但我們的目的，
我們通常將要使用 短短四年operations--插入，
選擇，更新和刪除。
你大概可以直觀地猜測 什麼所有這四個事情要做。
但是，我們將進入一個位 細節上的每一個。
>> 所以為便於這 視頻，讓我們假設
我們有以下兩種 表在單個數據庫中。
我們有有一個表稱為用戶 4 columns-- ID號，用戶名，
密碼和全名。
我們有一個第二 表在同一數據庫中
叫媽媽，只是存儲信息 關於用戶名和母親。
因此，對於所有的實施例 在這段視頻中，我們將
使用此數據庫並 後續更新它。
因此，讓我們說，我們要 信息添加到表中。
這就是插入操作做什麼。
在解釋所有 這些命令，我​​要去
給你一個總體框架來使用。
因為基本上，查詢 打算看非常相似，
我們只是要改變 略微不同的信息
做不同的事情與表。
>> 所以對於INSERT，骨架 看起來有點像這樣。
我們要插入到 一個特定的表。
然後，我們有一個開放的括號 和列的列表
我們希望把值放入。
關閉括號中， 下面的值，然後
再次，我們列出的值 我們希望把在表中。
>> 這所以一個例子 將是如下。
我想插入到表 用戶以下columns--
用戶名，密碼和全名。
因此，一個新行，其中我把 在這三列，我們很
打算把在值 紐曼，USMAIL，和紐曼。
因此，在這種情況下，我 把小寫紐曼
入用戶名欄，密碼 USMAIL，並全稱資本ñ
紐曼進入全名列。
>> 因此，這裡就是數據庫 看起來像以前一樣。
下面是用戶表上 頂級前看著我們這樣做等。
當我們執行這個 查詢，我們得到這個。
我們增加了一個新行到表中。
但請注意這樣一件事 我沒有具體說明，
但不知何故，我已經有了一個值 對，這就是這12個就在這裡。
我並沒有說我想 把ID號在那裡。
我希望把用戶名， 密碼，全稱。
而我做了，這很好。
>> 但我也得到了這個12。
為什麼我得到這12？
嗯，事實證明， 當你定義
這將是一列你 主鍵，通常是，
就像我說的，一個ID號。
這並不一定總是 將是一個ID號碼，
但它通常是一個好主意 是某種整數值。
你必須在phpMyAdmin的選擇 你創建數據庫時
或者你的表設置 列自動遞增。
>> 這是一個非常好的主意時， 你有一個主鍵的工作，
因為你想每個值 該列中是唯一的。
如果你忘記指定 它為一個以上的人，
你現在有一個情況 該列不再是唯一的。
你有兩個空格，這樣你就可以沒有 較長的唯一標識一個column--
或者你可以不再唯一 確定根據該列一行。
它失去了它的所有 值作為主鍵。
>> 所以顯然我做了什麼 這裡被配置的用戶ID
列自動遞增，使每個 時間我想補充信息表，
它會自動給我 對於主鍵的值。
所以，我永遠也不會忘記這樣做，因為 數據庫會為我做的。
所以這是一種很好的。
所以這就是為什麼我們得到 12在那裡，因為我
設置列設置為自動遞增。
如果我加別人 這將會是13，如果我加入
人家這將會是14，依此類推。
>> 因此，讓我們只是做一個更多的插入。
我們會插入到媽媽表中， 特別是，用戶名和母
列，值 克萊默和巴布斯克雷默。
因此，我們以前有這個。
當我們執行該 SQL查詢，我們有這個。
我們增加了克萊默和巴布斯 克萊默向媽媽表。
>> 所以這是插入。
選擇是我們用它來提取 從表中的信息。
因此，這是我們如何得到 信息從數據庫中。
所以SELECT命令都將是 非常經常用於編程。
一般framework--的 普通的骨架看起來是這樣的。
選擇一組列 一個表，然後任選
你可以指定一個condition--或 我們通常所說的謂語，
通常我們在SQL中使用的術語。
>> 但它基本上是什麼 你要特別行獲得。
如果你想要的，而不是獲取 一切，縮小它，
這是在那裡你會做到這一點。
然後選擇性地，你也可以 命令由一個特定的列。
因此，也許你想擁有的東西排序 按字母順序的基礎上一列
按字母順序或基於另一個。
>> 再次，WHERE和ORDER BY是可選的。
但是，他們很可能會 useful--特別
哪裡會是有益的 縮小讓你不
讓你的整個數據庫背部和 必須處理它，你只得到
它的作品，你所關心的。
因此，舉例來說，我可能要選擇 從用戶的ID號和全名。
所以，什麼才是這個樣子呢？
因此，這裡是我的用戶表。
我想選擇IDNUM 和全名的用戶。
我該怎麼走？
我要得到這一點。
我並沒有縮小它，所以我 獲得的ID號的每一行
而我得到的全部 從每列名。
>> 確定。
如果我要選擇密碼 從用戶WHERE--所以現在
我加入一個條件，一個predicate-- 其中IDNUM小於12。
因此，這裡是我的數據庫再次， 我的用戶表的頂部。
我該怎麼得到，如果我想 選擇信息，密碼，
其中用戶ID或IDNUM小於12？
我要得到這 信息反饋，對不對？
它發生IDNUM是10以下， 超過12，ID號11小於12。
我得到的密碼，這些行。
這就是我要的。
怎麼樣？
如果我要選擇從星 媽媽表其中username等於傑里？
OK，選擇明星是特 排序外卡的所謂
我們用它來搞定一切。
所以他們說選擇 用戶名逗號的母親，這
碰巧是僅 兩列此表，
我可以選擇星級 並得到一切
其中，用戶名等於傑里。
所以這就是我會得到 如果我做了特定的查詢。
>> 現在，數據庫 偉大的，因為他們允許
我們也許是組織信息 多一點效率比我們
否則可能會。
我們並不一定存儲 信息各相關件
大約在同一表的用戶。
我們有兩個表存在。
>> 我們需要存儲 每個人的母親的名字，
也許我們沒有社會保障 數，我們有他們的出生日期。
這並不總是需要 是在同一個表。
只要我們可以定義 在tables--之間的關係
而這也正是這關係 哪種數據庫術語起源
進入play--只要我們可以定義 表之間的關係，
之類的，我們可以劃分 或抽象事物的方式，
在這裡我們只有 真正重要的信息
我們關心用戶的表。
然後我們有輔助信息 在其他表或額外的信息
我們可以回到連接到主 用戶表中的某個特定的方式。
>> 所以在這裡，我們有這兩個表，但 有它們之間的關係，
對不對？
這似乎是用戶名 可能是什麼
中存在之間的共同 這兩個不同的表。
那麼，如果我們現在有 的情況下，我們
希望從中獲取用戶的全名 用戶的表，和他們的母親
從母親表名？
我們沒有辦法讓 那樣子，對不對？
有不包含單個表 雙方的全名和母親的名字。
我們沒有這個選項 從我們到目前為止看到的。
>> 因此，我們就來介紹 一個JOIN的想法。
並加入可能 最complex--
這真是最複雜的操作 我們要談的視頻。
他們是有點複雜， 但一旦你得到了它的竅門，
他們實際上是不是太糟糕。
這只是一個選擇的一個特例。
我們要選擇一組 加入從表中的列
在一些謂詞第二個表。
>> 在這種情況下，考慮一下像this-- 表一是一圈過來，
表二是另一個圈子在這裡。
並說明上游部分 在中間，它的
有點像，如果你認為 關於作為一個維恩圖，是什麼
他們有什麼共同點？
我們想鏈接這兩個表 根據他們的共同點
創造這個假設的表 這是兩人在一起的合併。
所以我們會看到這一點的 例如，也許這會幫助
它清除掉一點點。
因此，也許你想選擇 user.fullname和moms.mother
從用戶的加入，在 在任何情況下媽媽表
其中username列 是它們之間的相同。
這是一個新的 語法在這裡，這個用戶。
和媽媽..
如果我做多個表 在一起，我可以指定一個表。
我可以在特定的區別 上在最底層那裡。
我可以區分用戶名 用戶表列
從的username列 媽媽表，它是otherwise--
如果我們剛才說的用戶名等於 用戶名，並沒有真正
意味著什麼。
我們想這樣做，他們匹配。
>> 所以，我可以指定表和 在殼體的情況列名
哪裡會不清楚 我在說什麼。
所以，這就是我做的有我 從這個表說此列，
而且是非常明確的。
所以，再一次，我選擇 全名和母親的名字
從用戶表連接在一起 在任何情況下的媽媽表
在那裡他們共享column-- 它們共享該用戶名的概念。
>> 因此，這裡是我們以前的表。
這是我們的國家 數據庫作為它存在現在。
我們提取信息 這是開始。
這是新的表格，我們要去 創建這些結合在一起。
同時注意我們不突出 紐曼的行中的用戶的表，
我們不是在突出 克萊默的行中的媽媽表
因為沒有一個存在於 無論sets--兩個表。
>> 這是僅有一個共同的信息 它們之間是傑里的兩個表中
和gcostanza既是表。
所以，當我們在SQL JOIN，我們 get--我們做真正得到這一點。
這有點一個臨時變量。
這就像一個假設 合併這兩個表中。
實際上，我們得到的東西 這樣，在
我們在表合併在一起 它們在共同的信息。
>> 所以請注意users.username 和moms.username列，
它是完全一樣的。
這是信息 是來自用戶的一致
表和媽媽表。
所以，我們合併在一起。
我們丟棄的克萊默，因為他 在用戶表中不存在，
我們拋棄紐曼，因為 他沒有在母親表中存在。
因此，這是假設合併 使用SELECT的JOIN操作。
>> 然後，我們正在尋找的 用戶的全名和用戶的媽媽，
因此，這是信息 我們會從整個查詢
我們用SELECT進行。
因此，我們加入了表一起 我們提取這兩列，
所以，這就是我們會得到。
但是SQL連接是一種複雜的。
你可能不會做他們太多， 但只是有骨架的一些想法
你可以用它來合併兩個 表如果你一起需要。
最後兩個是一 簡單一點我保證。
所以在更新，我們可以使用UPDATE 改變表中的信息。
一般格式是更新一些 表中，設置一些列的一些值
WHERE一些謂詞是滿意的。
因此，例如，我們可能要 更新用戶表
並設置密碼亞達 亞達，其中ID號是10。
>> 因此，在這種情況下，我們 更新用戶表。
ID號是10，用於 那裡，第一行中，
我們要更新 密碼內容十分重要。
所以這是會發生什麼。
這是非常簡單的，對不對？
這只是一個很簡單的 修改該表。
>> DELETE是我們用來操作 從表中刪除的信息。
DELETE FROM表WHERE 一些謂詞是滿意的。
我們要從中刪除 用戶表例如
其中，用戶名是紐曼。
你可能已經猜到了什麼事情 在這裡發生之後，我們執行的SQL
查詢，紐曼走了從表中。
>> 因此，所有這些操作，因為我已​​經說過了， 是很容易做到在phpMyAdmin。
這是一個非常友好的用戶界面。
但它確實需要手動操作。
我們不想聘請手動操作。
我們希望我們的節目 做到這一點對我們來說，對不對？
因此，我們可能想要做的 這種編程方式。
我們希望將SQL和有 別的東西，為我們做到這一點。
>> 但是，我們已經看到，它允許 我們以編程方式做一些事情？
我們已經看到了PHP的，對不對？
它介紹了一些 動力到我們的節目。
所以幸運的是，SQL和 PHP玩的很漂亮起來。
有一個在PHP函數 稱為查詢，它都可以使用。
你可以通過為 參數或參數
查詢一個SQL查詢 您想執行。
和PHP會做以您的名義。
>> 所以，你已經接通後 用PHP數據庫，
有兩大初選你這樣做。
有一種叫做MySQLi的 而一些所謂的PDO。
我們不會進入一個巨大的 大量的細節那裡。
在CS50，我們使用PDO。
您已經連接後 你的數據庫，
然後可以進行查詢數據庫 通過把查詢作為參數
到PHP函數。
當你這樣做，你存儲 在關聯數組結果集。
>> 而且我們知道如何一起工作 關聯數組在PHP。
所以，我可能會說 像this-- $ results--
這是在PHP--等於查詢。
和然後把裡面的 查詢功能參數
那我傳遞查詢 看起來像SQL。
而事實上這是SQL。
這是查詢字符串，我會 喜歡在我的數據庫中執行。
>> 因此紅色，這是PHP。
這是SQL，我很 納入PHP通過
它的參數，查詢功能。
我想從選擇全名 其中，用戶ID號等於10。
然後，也許以後我做到了這一點， 我可能會說這樣的事情。
我想打印出來的 消息謝謝登錄。
>> 我希望它interpolate--我想 插值$結果全名。
所以，這就是我與該是如何工作的 我回來關聯數組。
$結果全稱會 基本上結束了打印輸出，
感謝登錄，傑里宋飛。
這是全名 其中，IDNUM等於10。
>> 所以我做的 是我now--我存儲
我的查詢，我的查詢結果 並導致一個關聯數組，
和全名是名 在專欄中，我漸漸的。
所以這是我的鑰匙插入結果 我想關聯數組。
所以感謝登錄，$結果， 全名會打印出來，將繼續堅持
就在這些花間 牙套，傑里宋飛。
我會想打印出的信息 感謝您登錄傑里宋飛。
>> 現在，我們可能不希望辛苦 代碼之類的東西在，對吧？
我們可能想要做類似打印 f，其中我們可以代替，也許
收集不同的信息， 或者有查詢過程
不同的信息。
因此查詢時，查詢功能有 排序換人的這一概念
非常相似的打印˚F百分之小號 和百分比C，是問號。
>> 我們可以使用問題 標誌非常類似
打印f以替代變量。
因此，也許你的用戶登錄前， 和保存他們的用戶ID號
在$的PHP超_session 全球性的密鑰ID。
他們登錄因此，也許以後， 你設置$ _SESSION ID等於10，
從實例推斷 我們只是在一秒鐘前看到的。
>> 所以，當我們真正執行 此查詢的結果現在，
它會插上10，或任何 在$ _SESSION ID值。
所以，讓我們來 有點更有活力。
我們不是硬編碼了的東西。
我們保存信息 某處，然後
我們可以再次使用這些信息來 排序概括了我們想做的事情，
和公正的插件和變化 我們網頁的行為
基於什麼用戶的ID號碼 實際上，他們已經登錄後。
它也可以，不過， 您的結果集
可能包括多個行。
在這種情況下，你有 arrays--的陣列
關聯數組的數組。
而你只需要遍歷它。
而且我們知道如何遍歷 通過在PHP中的數組，對不對？
因此，這裡可能是最 我們到目前為止看到的複雜的東西。
它實際上是把 三種語言在一起。
>> 在這裡，在紅，這是一些HTML。
我顯然starting--這是 一些HTML，我有一個片段。
我開始一個新的段落 電視的宋飛的媽媽說。
然後隨即 我開始的表。
並在那之後，我 有一些PHP的，對不對？
我有這一切的PHP代碼在那裡。
我顯然會進行查詢。
而為了讓查詢，我要去 可以使用SELECT母親們的媽媽。
>> 因此，這是getting--這是SQL。
所以藍色是SQL。
我們看到在一秒鐘前，紅色是HTML。
在這裡，綠色的是PHP。
所以，我正在做一個查詢 到我的數據庫，我
選擇所有的 母親在母親表。
不只是縮小它歸結為特定的 行，我問了所有的人。
>> 然後我檢查，如果結果是 不等於等於false。
這只是我的檢查方式排序 如果結果不等於空，
我們會看到下例子。
基本上這只是檢查，以 確保它實際上得到的數據備份。
因為我不想開始打印 出的數據，如果我沒有得到任何數據。
然後為每個結果作為結果的 從PHP的foreach語法，我做的
正在打印$結果母親。
所以我要得到一套 所有each--的母親的
它的關聯數組 arrays--，我打印出
每一個作為它自己的一個表中的行。
而這真的很漂亮 很多都在那裡給它。
我知道有一點 位怎麼回事
在這個最後的例子與陣列 arrays--關聯數組的數組。
但它確實剛燒開 倒在SQL中，查詢數據，
通常選擇後，我們已把 把信息到表，
然後就拉出來。
>> 這是我們把它 在這種特殊情況下。
我們將提取所有個人 母親從媽媽表。
我們得到了一整套他們，而我們 要遍歷並打印出
每一個。
如此反复，這可能是 最複雜的例子
我們已經看到，因為我們是混合三種 不同的語言在一起，對不對？
>> 同樣，我們在這裡的HTML紅色， 一些SQL這裡的藍色混合，
在綠一些PHP混合。
但所有這些玩 很好地在一起，這是
發展中的問題而已 良好的生活習慣，這樣你可以得到
他們你想要的方式一起工作。
而只有這樣，才能真正做到這一點 就是練習，練習，再練習。
我是道格·勞埃德，這是CS50。