尝试运行时出现此错误,这是什么意思?
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']))语句内部时它没有工作。我做错了什么?
答案 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');
}