《PHP和MySQLWeb開發從新手到高手(第5版)》一2.6將資料插入到表中

非同步社群發表於2017-05-02

本節書摘來自非同步社群《PHP和MySQL Web開發從新手到高手(第5版)》一書中的第2章,第2.6節,作者【澳】Kevin Yank,更多章節內容可以訪問雲棲社群“非同步社群”公眾號檢視

2.6 將資料插入到表中

PHP和MySQL Web開發從新手到高手(第5版)
資料庫建立好了,表也建立好了,剩下的工作就是將笑話放入到資料庫中。將資料插入到資料庫中的命令叫作INSERT,名字相當貼切。這條命令有兩種基本形式:

INSERT INTO tableName SET
 column1Name = column1Value,
 column2Name = column2Value,
 ⋮
INSERT INTO tableName
 (column1Name, column2Name, …)
 VALUES (column1Value, column2Value, …)

因此,要把一個笑話新增到表中,可以使用如下兩條命令中的任何一條:

INSERT INTO joke SET
joketext = "Why did the chicken cross the road? To get to the other
side!",
jokedate = "2012-04-01"
INSERT INTO joke
(joketext, jokedate) VALUES (
"Why did the chicken cross the road? To get to the other side!",
"2012-04-01")

注意,在INSERT命令的兩種形式中,列的順序必須與值的順序保持一致。否則,列的順序就沒有意義了。繼續進行,交換列和值對的順序並嘗試該查詢命令。

當你輸入查詢的時候,應該會注意到,我們使用了雙引號(“)來表明笑話的文字從哪裡開始以及從哪裡結束。像這樣用引號括起來的一段文字,叫作文字字串(text string)。這也是在SQL中表示大多數資料值的一種方式。例如,日期也是以”YYYY-MM-DD”.的形式作為文字字串輸入的。

如果你願意,可以輸入單引號而不是雙引號把文字字串括起來:

INSERT INTO joke SET
joketext = `Why did the chicken cross the road? To get to the other
side!`,
jokedate = `2012-04-01`

你可能會感到奇怪,當笑話文字中使用了引號,會發生什麼情況。如果文字包含了單引號,你應該用雙引號將文字括起來。相反,如果文字包含雙引號,用單引號將文字括起來。

如果我們想要包含在查詢中的文字,這樣會既包括單引號也包括雙引號。因此,你必須在文字字串中將衝突的符號進行轉義(escape)。在SQL中,通過在一個字元的前面新增一個反斜槓()來進行轉義。這會通知MySQL,忽略掉這個字元可能具有的任何“特殊含義”。在單引號或雙引號的例子中,它告知MySQL不要將這個符號當作是文字字串的結束符號。

為了讓這一點儘可能的清晰,以下是用於一則既包含單引號又包含雙引號的笑話的INSERT命令的例子:

INSERT INTO joke
(joketext, jokedate) VALUES (
`Knock-knock! Who`s there? Boo! "Boo" who? Don`t cry; it`s only a
joke!`,
"2012-04-01")

如上所示,我使用單引號標記了笑話文字的文字字串的開始和結束。因此,我必須將字串中的那3個單引號(即撇號)進行轉義,可以通過在它們前面放置反斜槓來實現。MySQL將會看到這些反斜槓,並且知道將字串中的這些字元當作單引號,而不是當作字串的結束標記。

現在你可能會問,如何在SQL文字字串中包含真正的反斜槓呢?答案是,輸入一個雙反斜槓(),MySQL會將其當作是文字字串中的一個單個的反斜槓。


相關文章