PHP 函数不返回 TRUE - 但它是

标签 php mysql

第一次来。我正在努力让这个 PHP 函数正常工作,5 小时后它让我发疯。

我有这个功能:

// DOES THE USER HAVE ACCESS?
function access_la_page($id) {

include('DB_db.php');

/// GENERATE SQL 
$sql = "SELECT parent FROM la_pages WHERE id = $id";

// PREPARE THE STATEMENT
$result = mysqli_query($conn, $sql);

if($result === false) {
  trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
  echo "FAIL" . $conn->error; exit();
}

$row = mysqli_fetch_array($result);

// CHECK PERMISSIONS DATABASE TO SEE IF USER HAS ACCSS HIGHER UP THE CHAIN  
$sql2 = "SELECT * FROM la_pages_permissions WHERE la_page_id = $id AND user_id = " . $_SESSION['user_id'];

$result2 = mysqli_query($conn, $sql2);

if($result2 === false) {
  trigger_error('Wrong SQL: ' . $sql2 . ' Error: ' . $conn->error, E_USER_ERROR);
  echo "FAIL" . $conn->error; exit();
}

if(mysqli_num_rows($result2) > 0){

    $value = TRUE;

    return $value;

}elseif($row['parent']!==$id&&$row['parent']&&!isset($value)) { 
    access_la_page($row['parent']); // CHECK DB RECURSIVELY TO SEE IF USE HAS PERMISSION HIGHER UP THE CHAIN    
}


}

然后我调用这个函数:

if(access_la_page($_SESSION['la_page_id'])==TRUE){
    echo "Success";
}else{
    echo "Fail";
}

现在...如果函数在第一个实例中命中 TRUE,它实际上会向我的页面返回 TRUE,成功!但如果它循环,则不会返回 TRUE。它什么也不返回。

但是,当我从语句中回显时,我可以看到该函数正在按预期执行,而当我回显 $value 时,它​​显示 TRUE 并且函数停止 - 这就是应该发生的情况。但该函数不返回 TRUE。

这有道理吗?这是因为我循环遍历该函数而不起作用吗?

编辑-请原谅我的无知。我在引号中加了 TRUE,现在我已经修改了它,但它仍然不起作用

最佳答案

如果通过,您的最终 If 语句将返回 'TRUE',但如果未通过,则不会返回任何内容。

您能否确认这一点,因为目前该函数返回 'TRUE'null。 这可能就是原因。

尝试在最后一个子句上返回,如果递归检查旨在帮助决定,那么它应该返回一些内容:

if(mysqli_num_rows($result2) > 0){

    $value = "TRUE";

    return $value;

}elseif($row['parent']!==$id&&$row['parent']&&!isset($value)) {
    return access_la_page($row['parent']); // CHECK DB RECURSIVELY TO SEE IF USE HAS PERMISSION HIGHER UP THE CHAIN    
}

关于PHP 函数不返回 TRUE - 但它是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24032122/

相关文章:

php - 对如何将我的 PHP 项目放到 Internet 上一无所知

php - MVC,填充我的演示模型的最佳实践是什么?

php - MySQL 左连接查询具有相同值的问题

mysql - 如何在定期更新数据中获取不大于给定日期范围的准确数据

php - 插入时连接字符串和主键 Id

php - 结合MySQL查询?

php - 如何使用 Laravel 8 查询构建器(如 eloquent)进行搜索

php - seo 效果 - 包含带有 <html> 标签的文件

mysql - 在 mysql 数据库中所做的更改不会反射(reflect)在 vb.net 应用程序中

php - 如何通过php从数据库中获取特定字段