2013-01-21 122 views
-2

我只是想知道什麼是此查詢之間的區別:

$query = "SELECT * FROM users WHERE id='".$_SESSION['mysql_result_id']."'"; 

,使一個變量爲這樣:

$mysql_result_id = $_SESSION['mysql_result_id']; 
$query = "SELECT * FROM users WHERE id='".$mysql_result_id."'"; 

兩者都似乎是相似的,但第二個沒有按沒有工作。如果我只需要會話的價值,爲什麼還需要連接?可以說,存儲在我的$_SESSION['mysql_result_id']中的值是'2',是不是就像id=2一樣?爲什麼我必須連接它?爲什麼我不能只把"WHERE id=$mysql_result_id"

+0

是的,有更少的方法將變量插入到雙引號字符串中。還有更簡單的方法來添加輸入到SQL查詢(搜索「準備好的語句」)。 – mario

+3

嘗試'echo $ query'第二個查詢並檢查其結果? – Sky

+0

我得到2的值,一切正常,直到我使用第二個概念。這是$查詢=「選擇*從用戶WHERE編號='」。$ mysql_result_id。「'」; – user1995927

回答

1

要初始化你的函數

$mysql_result_id = $_SESSION['mysql_result_id']; 

這個變量超出範圍爲你的函數,而$ _SESSION不被外部變量。這就是爲什麼它不起作用。在這裏閱讀關於PHP Variable Scope

如果你想方法2工作,那麼你必須移動這

$mysql_result_id = $_SESSION['mysql_result_id']; 

裏面的函數(只粘貼在你的問題,然後取出)

並回答你的第二個問題:您不必使用引號來包裝數字值。

+0

漂亮甜美的傢伙!謝謝! – user1995927

-2

這就像問有什麼區別之間:和

mysql_query("select now() from dual"); 

$sql = "select now() from dual"; 
mysql_query($sql); 

這只是浪費內存沒有很好的理由。

+2

他寫的第二個不適合他... –

+0

是的,第二個不工作。但是第一個,確實如此。這是我的問題。 – user1995927

+0

顯示更多你的代碼,你的問題中的代碼應該工作,錯誤是在別的地方 – dimaninc