Py学习  »  DATABASE

如何删除此错误!!)警告:mysqli_query():D:\wamp64\www\complete_blog_php\admin\includes\post_functions.php第28行中的空查询

Njue Chomba • 4 年前 • 213 次点击  
<?php 
// Post variables
$post_id = 0;
$isEditingPost = false;
$published = 0;
$title = "";
$post_slug = "";
$body = "";
$featured_image = "";
$post_topic = "";

/* - - - - - - - - - - 
-  Post functions
- - - - - - - - - - -*/
// get all posts from DB
function getAllPosts()
{
    global $conn;

    // Admin can view all posts
    // Author can only view their posts
    if ($_SESSION['user']['role'] == "Admin") {
        $sql = "SELECT * FROM posts";
    } elseif ($_SESSION['user']['role'] == "Author") {
        $user_id = $_SESSION['user']['id'];
        $sql = "SELECT * FROM posts WHERE user_id=$user_id";
    }
    $result = mysqli_query($conn, $sql);
    $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);

    $final_posts = array();
    foreach ($posts as $post) {
        $post['author'] = getPostAuthorById($post['user_id']);
        array_push($final_posts, $post);
    }
    return $final_posts;
}
// get the author/username of a post
function getPostAuthorById($user_id)
{
    global $conn;
    $sql = "SELECT username FROM users WHERE id=$user_id";
    $result = mysqli_query($conn, $sql);
    if ($result) {
        // return username
        return mysqli_fetch_assoc($result)['username'];
    } else {
        return null;
    }
}
?>
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38268
 
213 次点击  
文章 [ 1 ]  |  最新文章 4 年前
ArtisticPhoenix
Reply   •   1 楼
ArtisticPhoenix    5 年前

如果这两个条件都失败:

 if ($_SESSION['user']['role'] == "Admin") {
    $sql = "SELECT * FROM posts";
} elseif ($_SESSION['user']['role'] == "Author") {
    $user_id = $_SESSION['user']['id'];
    $sql = "SELECT * FROM posts WHERE user_id=$user_id";
}
$result = mysqli_query($conn, $sql);

然后 $sql 变量未定义。如果您必须这样做,那么您可以检查它是否被设置并返回一个默认值。

 if ($_SESSION['user']['role'] == "Admin") {
    $sql = "SELECT * FROM posts";
} elseif ($_SESSION['user']['role'] == "Author") {
    $user_id = $_SESSION['user']['id'];
    $sql = "SELECT * FROM posts WHERE user_id=$user_id";
}
if(!isset($sql)) return false; //or [] if you want the type to stay an array.
$result = mysqli_query($conn, $sql);

或者类似的事情,取决于你的需要。

您还可以返回一个错误:

}else{
     return new WP_Error( 'restricted', __( "Not an Admin or Author", "my_textdomain" ) );
}

https://codex.wordpress.org/Class_Reference/WP_Error

基本上是这个 $_SESSION['user']['role'] 两者都不是 Admin 也不 Author . 需要注意的一点是字符串匹配区分大小写。