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