這就要從雙引號和單引號的作用講起: 雙引號里面的字段會(huì )經(jīng)過(guò)編譯器解釋然后再當作HTML代碼輸出,但是單引號里面的不需要解釋?zhuān)苯虞敵?。例如? $abc='I love u'; echo $abc //結果是:I love u echo '$abc' //結果是:$abc echo "$abc" //結果是:I love u 所以在對數據庫里面的SQL語(yǔ)句賦值的時(shí)候也要用在雙引號里面SQL="select a,b,c from ..." 但是SQL語(yǔ)句中會(huì )有單引號把字段名引出來(lái) 例如:select * from table where user='abc'; 這里的SQL語(yǔ)句可以直接寫(xiě)成SQL="select * from table where user='abc'" 但是如果象下面: $user='abc'; SQL1="select * from table where user=' ".$user." ' ";對比一下 SQL2="select * from table where user=' abc ' " 我把單引號和雙引號之間多加了點(diǎn)空格,希望你能看的清楚一點(diǎn)。 也就是把'abc' 替換為 '".$user."'都是在一個(gè)單引號里面的。只是把整個(gè)SQL字符串分割了。 SQL1可以分解為以下3個(gè)部分 1:"select * from table where user=' " 2:$user 3:" ' " 字符串之間用 . 來(lái)連接,這樣能明白了吧。 大家來(lái)看一下,這是一個(gè)標準的SQL語(yǔ)句,因為username是文本型字段,所以字段值兩邊要加雙引號,表示小王是一個(gè)字符串。 (2)可是在ASP中,我們通常這樣寫(xiě) strSql="Insert Into users(username) values('小王')" 此時(shí),前后的雙引號表示中間是一個(gè)字符串。而小王兩邊的單引號是因為發(fā)生了引號嵌套,所以?xún)葘右栐摓榱藛我枴?span lang="EN-US">
(3)實(shí)際插入時(shí),因為小王通常是從表單中獲取的變量,不過(guò)因為變量不能直接寫(xiě)入字符串,必須通過(guò)連接符&和字符串連接在一起,所以要寫(xiě)成如下形式:
myusername=Request.Form("username")
strSql="Insert Into users(username) values('"&myusername&"')"
很多人此時(shí)就糊涂了,為什么其中又有單引號,又有雙引號啊。簡(jiǎn)單的看上面的式子,其實(shí)是由如下三部分組成的:
字符串常數:"Insert Into users(username) values('"
字符串變量:myusername
字符串常數:"')"
直接理解上面的式子可能比較困難,現在我們變量myusername的值代入就能看清楚了。假如myusername="小王",代入:
strSql="Insert Into users(username) values('"&"小王"&"')"
然后依次執行其中的連接運算符,結果為:
strSql="Insert Into users(username) values('小王')"
這就是(2)中提到的正確的SQL語(yǔ)句。
到此就能看清楚了:
式子中第1、2個(gè)雙引號配套,表示這是一個(gè)字符串。第3、4個(gè)雙引號配套,也表示是一個(gè)字符串。
而式子中的單引號就是文本型字段值小王前后的單引號。
(4)上面只有一個(gè)字段,下面來(lái)看一個(gè)有兩個(gè)字段的情況:
strSql="Insert Into users(username,password) values('"&myusername&"', '"&mypassword&"')"
其中myusername和mypassword是變量。
現在假如myusername="小王",mypassword="123456",代入其中,結果為:
strSql="Insert Into users(username, password) values('"&"小王"&"', '"&"123456"&"')"
依次執行連接運算,結果為:
strSql="Insert Intou sers(username, password) values('小王', '123456')"
(5)文本型字段值兩邊加引號,日期型兩邊加#,數字、邏輯兩邊什么都不用加。
如下面age是數字,submit_date是日期型。
strSql="Insert Into users(username, password,age, submit_date) values('"&myusername&"' ,'"&mypassword&"' ,"&myage&", #"&mysubmit_date&"#)"
注意這里根據字段的類(lèi)型兩邊加上相應的符號,或者不加。假如myusername="小王",mypassword="123456",myage=20,mysubmit_date="
strSql="Insert Into users(username,password,age,submit_date) values('"&小王"&"','"&"123456"&"',"&20&",#"&"
這里的20很特殊,運算時(shí),首先會(huì )自動(dòng)轉換為字符串,因為這里參與運算的都是字符串。結果為:
strSql="Insert Into users(username, password,age,submit_date) values('"&小王"&"','"&"123456"&"',"&"20"&",#"&"
依次執行連接運算,結果為:
strSql="Insert Into users(username, password,age,submit_date) values('小王','123456',20,#
這正是我們需要的標準的SQL語(yǔ)句。
聯(lián)系客服