2013-06-05 89 views
-2

我現在真的遇到了問題。我嘗試了幾十年,我找不到爲什麼它不工作。我想讓登錄的用戶在特定頁面上看到他們的電子郵件。我現在嘗試了新的代碼,我得到這個錯誤:Notice: Undefined variable: row in來自mysql的Fecthing信息

我使用的代碼是:

<? 
    $username = $_SESSION['username']; 
$sql = "select * from users where username=" . $username . ""; 
echo $sql; 

$query = mysql_query($sql); 

while ($row = mysql_fetch_array($query)) { 

} 
?> 

<?php echo $row['email']; ?> 
+0

你試圖通過做'echo'手動運行查詢? – baig772

+2

強制性評論:'mysql'已棄用。請使用'mysqli'。 – PlantTheIdea

+0

你一直在嘗試幾十年? –

回答

0
<?php 
    $username = $_SESSION['username']; 
    $query = mysql_query("select * from users where username='".$username."'"); 

    while ($row = mysql_fetch_array($query)) { 
    $email=$row["email"]; 
    } 
    echo $email; 
?> 

嘗試。 不使用mysql_ *函數

+0

你最好,謝謝! ;)我會在4分鐘內接受 – carl

0

我想......問題在於SQL查詢。我建議你的專欄「用戶名」就像VARCHAR(50)。所以你必須添加報價。

$sql = "select * from users where username='" . $username . "'"; 
+0

兩件事。首先,如果可以嵌入,則嵌入。它看起來不像意大利麪代碼: - $ sql =「select * from users where username ='$ username'」 - 其次,無論您發送到數據庫中是什麼,您都應至少使用addslashes() ,以便某人在用戶名中輸入查詢時不能執行查詢。如果您使用的是mysqli,則使用它們的real_escape_string方法。 –

0

我看到一個bug和一個設計問題。

您已經設計了腳本,以便在while循環的條件下打印最後分配給$ row的內容。

由於查詢沒有返回任何內容並且循環沒有運行,您將收到錯誤。因此,$行永遠不會被分配。話雖如此,如果你所要做的只是在返回的第一條記錄中顯示「email」列的值,那麼你可能不想使用while循環。如果你確實想要,那就停下來。

在$ result調用mysql_fetch_assoc()(不會返回太多的數據),並檢查它是否不返回FALSE(找不到一個或多個記錄)。

if((row = mysql_fetch_assoc($result)) === false) 
    die("Error."); 

> 電子郵件: