PHP - 注意:未定义变量出现两次

3
在加载我的页面时,我遇到了以下两个错误:
Notice: Undefined variable: realtor in C:\Program Files\EasyPHP-5.3.9\www\cglst\images\addform.php on line 255

并且

Notice: Undefined variable: phone in C:\Program Files\EasyPHP-5.3.9\www\cglst\images\addform.php on line 256

我确实定义了这两个变量,但是我不明白为什么会出现这些错误。下面是我的代码:

function addListing() {//if data was provided, insert it into database and confirm
    //this will allow everything to be sanitized properly
    require_once "sanitize.php";
    $submitted = false;

    //Checking if values were passed
    if (isset($_POST['area']) &&
        isset($_POST['price']) &&
        isset($_POST['address']) &&
        isset($_POST['bedrooms']) &&
        isset($_POST['fullbath']) &&
        isset($_POST['halfbath']) &&
        isset($_POST['sqft']))
        //if passed, sanitize and set variables accordingly
        {
            $area = sanitizeOne(get_post('area'), 'plain');
            $price = sanitizeOne(get_post('price'), 'int');
            $address = sanitizeOne(get_post('address'), 'plain');
            $bedrooms = sanitizeOne(get_post('bedrooms'), 'int');
            $fullbath = sanitizeOne(get_post('fullbath'), 'int');
            $halfbath = sanitizeOne(get_post('halfbath'), 'int');
            $sqft = sanitizeOne(get_post('sqft'), 'int');
            $submitted = true;
        }

    //optional fields
    if (isset($_POST['remarks']))
        {
            $remarks = sanitizeOne(get_post('remarks'), 'plain');
        }
    else
        {$remarks = ' ';}

    if (isset($_POST['realtor']))
        {
            $remarks = sanitizeOne(get_post('realtor'), 'plain');
        }
    else
        {$realtor = "Anne-Marie Pelletier";}

    if (isset($_POST['phone']))
        {
            $remarks = sanitizeOne(get_post('phone'), 'plain');
        }
    else
        {$phone = "201.710.5500";}

    if ($submitted) {
        $query = 'PREPARE statement FROM "INSERT INTO bix(area, price, address, bedrooms, 
                fullbath, halfbath, sqft, remarks, realtor, phone) VALUES(?,?,?,?,?,?,?,?,?,?)"';
        mysql_query($query);
        $query = 'SET 
                    @area = "' . $area . '"' .
                    '@price = "' . $price . '"' .
                    '@address = "' . $address . '"' .
                    '@bedrooms = "' . $bedrooms . '"' .
                    '@fullbath = "' . $fullbath . '"' .
                    '@halfbath = "' . $halfbath . '"' .
                    '@sqft = "' . $sqft . '"' .
                    '@remarks = "' . $remarks . '"' .
                    '@realtor = "' . $realtor . '"' . //line 255
                    '@phone = "' . $phone . '"'; //line 256
        mysql_query($query);
        $query = 'EXECUTE statement USING @area,@price,@address,@bedrooms,@fullbath,@halfbath,@sqft,@remarks,@realtor,@phone';
        mysql_query($query);
        $query = 'DEALLOCATE PREPARE statement';
        mysql_query($query);
        return true;
    }
}
function get_post($var)
{
    return mysql_real_escape_string($_POST[$var]);
}

如果已提交表单,则将条目添加到数据库中(页面将表单提交给自身以执行此操作)。

3个回答

2
您的问题出在这里,是一个复制粘贴错误;
if (isset($_POST['realtor']))
{
    $remarks = sanitizeOne(get_post('realtor'), 'plain');
}
else
    {$realtor = "Anne-Marie Pelletier";}

如果设置了房地产经纪人为帖子参数,您将把帖子变量的值分配给$remarks而不是$realtor$phone 也有完全相同的问题。

好的,新问题:它正在向我的数据库添加条目,但是每个字段都为空。 - mavix
你的SET查询没有用逗号分隔参数,我很确定字符串需要使用单引号'而不是双引号"。尝试在PhpMyAdmin中输出并查看是否可以运行。无论如何,你都没有检查任何返回值,这会使诊断变得更容易。 - Joachim Isaksson
我没有想到将语句输出并尝试运行,这帮助我解决了所有的问题。谢谢。 - mavix

1
如果传递了电话值,您将设置备注变量为电话内容,如果未设置,则将固定电话设置为备注变量。
更改:
    if (isset($_POST['phone']))
    {
        $remarks = sanitizeOne(get_post('phone'), 'plain');
    }
else
    {$phone = "201.710.5500";}

    if (isset($_POST['phone']))
    {
        $phone = sanitizeOne(get_post('phone'), 'plain');
    }
else
    {$phone = "201.710.5500";}

同理针对房地产经纪人

为了解决全部为null的问题,尝试录入一个没有经纪人或电话的记录即使用代码中的默认值。如果这两个值被存储,则问题在于sanitizeOne,请将代码发布给我们以供帮助。如果不是,请尝试捕获所有前两个查询的输出并发布。


0

你从未给 $realtor 或 $phone 赋值。

if (isset($_POST['realtor']))
        {
            $remarks = sanitizeOne(get_post('realtor'), 'plain');
        }

你可能想使用 $realtor = sanitizeOne(get_post('realtor'), 'plain');

$phone 也是一样的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接