簡體   English   中英

有人可以解釋這段代碼的語法嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM