php中的未定义变量但已定义?

时间:2013-05-29 08:15:05

标签: php sql variables

我想在主页面上进行一个配置文件页面,当我登录并点击个人资料页面时,我有2个错误。我想显示名字和姓氏。

Notice: Undefined variable: first_name in C:\xampp\htdocs\FontLibrary\Profile.php on line 181

 Notice: Undefined variable: last_name in C:\xampp\htdocs\FontLibrary\Profile.php on line 183

但我已经在if语句中定义了它?

相关代码是

<?php
            session_start();
            include 'dbfunctions.php';
            $msg = "";
            $id = $_SESSION['id'];
            if (!isset($id)) {
                $id = $_SESSION['id'];
            }

            // Build the SELECT statement
            $select_query = "SELECT * FROM users WHERE id = ".$id;

            //Run the Query
            $result = mysql_query($select_query);

            if ($result) {
                $row = mysql_fetch_array($result);
                $first_name = $row['first_name'];
                $last_name = $row['last_name'];
            }
            ?>

    First Name:<?php echo $first_name ?> <br />
    Last Name:<?php echo $last_name ?> <br />

3 个答案:

答案 0 :(得分:4)

var_dump()您的$result检查它包含您的期望。

您的查询失败(或什么都不返回)可能会导致$first_name$last_name从未设置,因为它会跳过if语句。

和/或者你可以在if语句之前初始化它们。

$first_name = "";
$last_name = "";
if ($result) 
{
    $row = mysql_fetch_array($result);
    $first_name = $row['first_name'];
    $last_name = $row['last_name'];
}

作为旁注,mysql_函数已被弃用。请考虑使用mysqliPDO

答案 1 :(得分:0)

如果结果为false,则表示未定义变量。您还必须使用默认值在块之外定义它们。

答案 2 :(得分:0)

您对mysql_query()的调用似乎没有返回值。

if ($result)是假的。

还请,请转发你传递给DB的字符串!!! :(