2014-07-03 15 views
-1

我是PHP和MySQL的新手,我對SELECT查詢有點麻煩。我有一些問題,與此PHP/SQL變量:小型MySQL錯誤

$dbPassword = mysql_query("SELECT UserData.Password FROM UserData WHERE UserData.EmailAddress = '.$loginEmail.'"); 

什麼是選擇從行裏的「EmailAddress的」是同在Apache MySQL服務器的另一個值的值正確的方法是什麼?

所有幫助將不勝感激。

+4

您需要學習基本的PHP字符串構建:http://www.php.net/manual/en/language.operators.string.php您的'''連接運算符是INSIDE字符串,這意味着它們不是操作員,他們只是'''成爲字符串的一部分。 –

+0

啊。現在,我確實學到了這一點。感謝您的領導! –

+2

另外,閱讀[爲什麼不應該在PHP中使用mysql_ *函數?](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 – DCoder

回答

1

請注意$dbPassword應該是結果集對象,而不是標量。

您需要從搜索結果中「獲取」行。

一個例子文檔http://www.php.net/manual/en/function.mysql-query.php

中提供您還可以用PHP字符串連接的問題。

如果您是通過兩個單獨的步驟完成此操作,則可以在執行之前對包含SQL語句的字符串進行回顯(或printf或vardump)。

另請注意,在SQL語句中包含「不安全」值會使您的代碼容易受到SQL注入的影響。 Little Bobby Tables

$sql = "SELECT UserData.Password FROM UserData WHERE UserData.EmailAddress = '" 
     . mysql_real_escape_string($loginEmail) . "'"; 
vardump($sql); 
$res = mysql_query($sql); 

(該vardump不是必需的,它只是那裏的調試,我們看到,即將被髮送到數據庫字符串的內容的方式(當我們正在調試。問題,它可以幫助我們確定問題是否在SQL文本中,或者它是否是數據庫中的問題。

我們想要測試對mysql_query實際返回結果集的呼叫,還是返回錯誤。一旦我們驗證了它是一個有效的結果集對象,我們就可以從結果集中獲取行(有多種功能可以執行該操作。)

注意:說明mysql擴展的文檔中的紅色框已被棄用。新代碼應該使用mysqli或PDO擴展。

+0

xkcd是驚人的,感謝您的幫助! –