致命错误:未捕获错误:调用PHP中未定义的函数Call()



我是PHPMySQL的初学者。这里我陷入了一个问题,即

致命错误:未捕获错误:调用PHP 中未定义的函数Call((

在我的开发应用程序中。下面是具体问题的代码示例。

//  get the user id from the db
$stmt = $con->prepare("SELECT * FROM doctor_specialist WHERE username = ? ");
$stmt->bind_param("s",$doctor_name);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows > 0){
while($row = $result->fetch_assoc()) {

$user_id = $row['user_id'];
//  check the time slots whether it is available
$stmt9 = $con->prepare("SELECT * FROM doctor_schedule WHERE user_id = ?  AND DATE_FORMAT(end_time,'%Y-%m-%d')  = ? ");
$stmt9->bind_param("ss",$user_id,$date);
$stmt9->execute();
$result9 = $stmt9->get_result();
if($result9->num_rows > 0){
while($row = $result9->fetch_assoc()) {
$end_times_doctor = date('Y-m-d  H:i:s', strtotime($row['end_time']));
}
}
//  check the time slots whether it is available
$stmt10 = $con->prepare("SELECT * FROM patient_schedule WHERE user_id = ?  AND  DATE_FORMAT(end_time,'%Y-%m-%d')  = ? order by end_time DESC LIMIT 1 ");
$stmt10->bind_param("ss",$user_id,$date);
$stmt10->execute();
$result10 = $stmt10->get_result();
if($result10->num_rows > 0){ 
while($row = $result10->fetch_assoc()) {
$end_times_patient = date('Y-m-d  H:i:s', strtotime($row['end_time']));
$time_interval = date('Y-m-d H:i:s',strtotime('+15 minutes',strtotime($row['end_time'])));
}
$diff = strtotime(date($end_times_doctor)) - strtotime($end_times_patient);
$time = date('i:s', $diff);

if ($time <= 14 ) {

echo 'Time passed';


}else{
call();
}

} else {

call();

function call() {
// something else

每当我执行应用程序时,都会发生此错误。事实上,我不知道哪里出了问题。有人能帮我吗?我将不胜感激。

有关条件函数,请参阅文档。您当前正在else块内定义函数:

if (something) {
if (something else) {
//...
} else {
call();
}
} else {
call();
function call () {
//...
}
}

请注意调用call函数的两个位置。其次,它在定义函数的同一范围内,只要函数在范围内,PHP就允许在定义函数之前调用该函数。

但是,在该代码中调用call第一个位置处于完全不同的范围。在这种情况下,您在if块中,其中函数是在else块中定义的。因此,根据定义,任何时候你试图调用该函数,它都不会被定义。

一般来说,不要有条件地定义函数。(除非你有充分的理由这样做,并且真正理解你所使用的逻辑。(在更高的范围内定义函数,这样你就可以在两个块中调用它:

if (something) {
if (something else) {
//...
} else {
call();
}
} else {
call();
}
function call () {
//...
}

最新更新