以下2個查詢有什麼區別?{}如何在PHP中影響MySQL查詢?
mysql_query("UPDATE table SET name = '$name'");
mysql_query("UPDATE table SET name = '{$name}'");
以下2個查詢有什麼區別?{}如何在PHP中影響MySQL查詢?
mysql_query("UPDATE table SET name = '$name'");
mysql_query("UPDATE table SET name = '{$name}'");
在SQL方面,絕對沒有區別:兩個查詢完全一樣。
(您可以檢查通過回聲-ING它們)
{$variable}
是$variable
更完整的語法,即允許使用:
"this is some {$variable}s"
"{$object->data}"
"{$array['data']}"
"{$array['data']->obj->plop['test']}"
欲瞭解更多信息,請閱讀說明書的Variable parsing/Complex (curly) syntax部分(引用了幾位):
這不叫複雜,因爲 語法複雜,而是因爲它 允許使用複雜的 表達式。
任何標量變量,數組元素或 帶有字符串的對象屬性 表示可以通過 包含此語法。
只需將 表達式與 出現在字符串外部的方式相同,然後 將其包裝在{
和}
中。
不錯的完整答案! – Treffynnon 2011-03-20 18:24:36
大括號「轉義」PHP變量並且不傳遞給MySQL。用一個簡單的變量如$name
它並沒有什麼區別,但是它有一些像$user['name']
這樣的東西。所以你在問題中發佈的兩個查詢之間沒有什麼不同。
該查詢可以,如果你想通過單一的變量被使用:
mysql_query("UPDATE table SET name = '$name'");
這可以如果從數組的特定索引傳遞的值來使用。
mysql_query("UPDATE table SET name = '{$1}'",$name);
順便說一句,你的兩個查詢也都是正確的。
請注意,您可以[將行格式化爲代碼](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)縮進四個空格。編輯器工具欄中的「{}」按鈕可以爲您做到這一點。編輯你的答案並嘗試一下。單擊編輯器工具欄中的橙色問號以獲取更多信息和格式化提示。 – outis 2011-03-20 18:47:21
我還沒有遇到使用大括號的SQL語法。 – 2011-03-20 18:19:48
示例代碼可能容易受到[SQL注入](http://unixwiz.net/techtips/sql-injection.html),這是一個非常嚴重的[安全風險](http://bobby-tables.com/ )。爲了解決這個問題,從過時的mysql驅動程序切換到[PDO](http://php.net/PDO)並使用[prepared statements](http://www.php.net/PDO.prepared-statements)。如果您需要PDO教程,請嘗試[「用PHP和PDO編寫MySQL腳本」](http://www.kitebird.com/articles/php-pdo.html)。您保存的網站可能只是您自己的網站。 – outis 2011-03-20 18:23:02
大括號是一個PHP的東西,而不是MySQL的東西,FYI – 2011-03-20 18:26:36