2013-06-05 91 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."); 

> 电子邮件: