致命错误:调用未定义的函数availableDate()

时间:2014-05-14 09:15:42

标签: php sql

尝试运行时出现此错误,这是什么意思?

if(isset($_POST['submit']))
    {
        $date = $_POST['date'];
        $partySize = $_POST['partysize'];
        $catering = $_POST['catering'];

        print_r($date);
        print_r($partySize);
        print_r($catering);

        include "/diska/www/include/coa123-13-connect.php";
        $host='co-project.lboro.ac.uk';
        $dbName='coa123wdb';

        $dsn = "mysql://$username1:$password1@$host/$dbName"; //Data Source Name

        require_once('MDB2.php'); //Just include this line into your program - you do not have to have the source in your directory
        $db =& MDB2::connect($dsn); //Try to make a connection

        if (PEAR::isError($db)) {
            die($db->getMessage());
        }

        //step 1 - query
        $sql = "SELECT * FROM venue
        WHERE capacity >= $partySize";

        //step 2 - executing the query
        $result =& $db->query($sql);
        if (PEAR::isError($sql)) {
            die($result->getMessage());
        }

        $valueIDArray = array();

        while($row = $result -> fetchrow()){
            $valueIDArray[] = $row[0];
        }


        $values = implode(',', $valueIDArray);
        $query = "SELECT * FROM venue_booking
        WHERE venue_id IN ($values)";

        //step 2 - executing the query
        $result1 =& $db->query($query);
        if (PEAR::isError($query)) {
            die($result1->getMessage());
        }

        while($row = $result1 -> fetchrow()){
            $idValue[] = $row[0];
            $dateValues[] = $row[1];
        }

        availableDate($dateValues,$date,$idValue, $db); //Line error points to

        function availableDate($bookedDates, $date, $idValue, $db){

我已经在错误指向的行上进行了评价,这个文件在它自己的PHP文件中有效但在if(isset($ _ POST [' submit']))语句内部时它没有工作。我做错了什么?

2 个答案:

答案 0 :(得分:2)

将函数定义移到if语句之外。几乎从来没有一个很好的理由这样做 - 唯一的理由可能是,如果你想要根据条件不同的功能定义,但这似乎并不是你正在做的事情。如果在if中定义一个函数,则必须在调用之前定义它;在顶层定义的函数可以从任何地方调用。

答案 1 :(得分:1)

在定义之后调用availableDate,如果您必须在if语句中定义它。

实施例

function availableDate($bookedDates, $date, $idValue, $db){
...
}

//and then call it...    
availableDate($dateValues,$date,$idValue, $db); //Line error points to

编辑:

条件语句

中定义的非工作函数示例
if(1){

    func('a');

    function func($a){
        echo $a;
    }
}

这不会奏效,但这会:

if(1){

    function func($a){
        echo $a;
    }

    func('a');            
}