[英]Can someone explain the syntax of this code?
我在工作正常的php文件中有以下查詢:
$query = "SELECT `name` FROM users WHERE name='".mysqli_real_escape_string($link,$name)."'";
我是在教程中找到它的,所以我想把頭放在語法周圍。 特別是這部分:
'".mysqli_real_escape_string($link,$name)."'
如果函數mysql_real_escape_string()返回一個字符串,為什么需要雙引號? 另外,我在php中了解。 意味着連接,那么此代碼是否添加到空字符串“”?
請幫助,我真的搞砸了。
需要雙引號,因為這是使用字符串串聯來組成查詢。 由於mysqli
驅動程序支持占位符,因此這確實是一種麻煩的方式:
$query = "SELECT `name` FROM users WHERE name=?";
?
表示數據將流向何處。 然后,您可以使用bind_param
方法在其中添加$name
值。
如果您受過使用占位符的約束,則不必擔心引用或轉義 。
大多數計算機程序中有兩種類型的引號, '
和"
。您可以使用兩種相同類型的引號將字符串括起來,例如'abc'
或"def"
。但是,當您需要在其他引號中包含引號時,可以將'"'
。 該語法不響應不同類型的引號。 同樣的原則在這里適用。
在這種情況下,代碼行可以表示為
`$query = "SELECT `name` FROM users WHERE name=''";`
但是單引號中需要包含內容。 這是通過串聯添加的。
單引號標識正在構建的SQL查詢中的字符串。
您的查詢將例如顯示在:
SELECT `name` FROM users WHERE name='John';
(注意約翰周圍的引號)
反引號用於替換對象名稱。
此代碼中沒有空字符串。 最后一個"'"
只是關閉在name='"
打開的單引號字符串。在mysql查詢中,字符串必須用引號引起來,這里函數返回用單引號引起來的字符串。可以像這樣澄清這個:
$name = mysqli_real_escape_string($link,$name);
$query = "SELECT `name` FROM users WHERE name='".$name."'";
假設如果變量$name = 'Joffery'
,則$query
變量將像這樣打印
SELECT `name` FROM users WHERE name='Joffery'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.