第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

SQL 中的 PHP 報(bào)價(jià)

SQL 中的 PHP 報(bào)價(jià)

PHP
Qyouu 2022-09-17 22:38:07
為什么此代碼會(huì)產(chǎn)生錯(cuò)誤  $sql = "INSERT INTO accountlist VALUES (\"\", \"$user\", \"$pwd\", \"$mail\", \"$date\")";而這個(gè)沒有?  $sql = "INSERT INTO accountlist VALUES ('', '$user', '$pwd', '$mail', '$date')";我知道雙引號處理變量,而單引號則不然,所以第一個(gè)選項(xiàng)應(yīng)該是正確的,但它恰恰相反!
查看完整描述

3 回答

?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

因?yàn)樵诘谝粋€(gè)中,您忘記連接,從而導(dǎo)致錯(cuò)誤。但是等等...。

....您應(yīng)該始終使用準(zhǔn)備好的語句,這樣您就不必再擔(dān)心查詢中的引號了!

在第二個(gè)查詢中,PHP 將用單引號插入變量,因?yàn)檎麄€(gè)查詢被雙引號包圍。

小鮑比你的腳本有SQL注入攻擊的風(fēng)險(xiǎn)。即使逃避繩子也是不安全的!


查看完整回答
反對 回復(fù) 2022-09-17
?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

要回答您的問題,而不是繼續(xù)糾纏于查詢參數(shù)...

https://www.php.net/manual/en/language.types.string.php 解釋了在帶引號的字符串中使用引號字符的機(jī)制。

基本上,如果您的PHP字符串由分隔,那么下一個(gè)字符是字符串的末尾。""

但是,您可能希望在字符串中使用文字雙引號字符,但不要結(jié)束字符串。為此,您可以在它前面放置一個(gè)反斜杠,如下所示:

$sql = "INSERT INTO accountlist VALUES (\"\", \"$user\", \"$pwd\", \"$mail\", \"$date\")";

然后,反斜杠雙引號字符將成為字符串內(nèi)容的一部分,而不是字符串末尾的分隔符。

但是,雙引號字符串中的單引號字符不會(huì)導(dǎo)致相同的歧義,因此不需要反斜杠。因此,以下工作沒有錯(cuò)誤:

$sql = "INSERT INTO accountlist VALUES ('', '$user', '$pwd', '$mail', '$date')";

解析器可以分辨出單引號不是它要用來結(jié)束雙引號字符串的字符。因此,這些單引號被解析為文字字符。

這在許多其他編程語言中的工作方式相同,例如Java,C,C++,Ruby,Python,Perl,甚至在SQL本身中。

這就是為什么有些人可能聽起來不耐煩你問這個(gè)問題。這是一個(gè)非常初級的問題,表明你對編程語言的閱讀還不夠,你希望社區(qū)能為你提供個(gè)性化的輔導(dǎo),讓你了解你應(yīng)該自己掌握的概念。


查看完整回答
反對 回復(fù) 2022-09-17
?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊

他們說的是死在錢上...而且也相當(dāng)容易!

您的查詢變?yōu)椋?/p>

INSERT INTO accountlist VALUES ("", ?, ?, ?, ?)

交易品種(請注意,它們沒有括在引號中)是參數(shù)。?

現(xiàn)在,每次執(zhí)行查詢時(shí),您都會(huì)提供一個(gè)數(shù)組,其中包含四個(gè)值,以便在語句中從左到右替換。這些值可以是任何東西,你不必關(guān)心引號等,因?yàn)樗鼈儾皇荢QL的一部分。相反,參數(shù)是輸入。

如果你必須做“很多這樣的”,比如幾千或幾百萬次,你只準(zhǔn)備一次語句,然后根據(jù)需要多次執(zhí)行準(zhǔn)備好的語句,每次提供不同的值數(shù)組作為輸入。

還有很多庫可以讓你按名稱指定參數(shù),給出命名值的哈希值,例如

INSERT INTO accountlist VALUES ("", :user:, :pwd:, :mail:, :date:)

{ 'user' => 'fred', 'pwd' => 'secret', 'mail' => 'foo@bar.com', 'date' => today() }

...并且該庫會(huì)將其轉(zhuǎn)換為有效的 SQL 語句,如上所示。

更安全,更少頭痛,并且明顯更有效率。


查看完整回答
反對 回復(fù) 2022-09-17
  • 3 回答
  • 0 關(guān)注
  • 166 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號