接收解析错误 - PHP期望标识符(T_STRING)或变量(T_VARIABLE)[重复]

问题描述 投票:-2回答:1

这个问题在这里已有答案:

不确定我哪里出错了。我正在尝试创建一个论坛,我一直收到此错误消息。

“解析错误:语法错误,意外'[',期望标识符(T_STRING)或变量(T_VARIABLE)或'{'或'$'在C:\ xampp \ htdocs \ project \ includes \ User.php第17行”

到目前为止我所拥有的:

User.php页面:

<?php
class User {
private $user;
private $con;

public function __construct($con, $user){
    $this->con = $con;
    $user_details_query = mysqli_query($con, "SELECT * FROM users WHERE user_name='$user'");
    $this->user = mysqli_fetch_array($user_details_query);
}

public function getUsername() {
    return $this->user['user_name'];
}

public function getNumPosts() {
    $username = $this->['user_name'];
    $query = mysqli_query($this->con, "SELECT num_posts FROM users WHERE user_name='$username'");
    $row = mysqli_fetch_array($query);
    return $row['num_posts'];
}

}

?>

Post.php页面:

<?php
class Post {
private $user_obj;
private $con;

public function __construct($con, $user){
    $this->con = $con;
    $this->user_obj = new User($con, $user);
}

public function submitPost($topic, $title, $body, $user_to){
    $topic = strip_tags($title);
    $topic = mysqli_real_escape_string($this->con, $title);
    $title = strip_tags($title);
    $title = mysqli_real_escape_string($this->con, $title);
    $body = strip_tags($body);
    $body = mysqli_real_escape_string($this->con, $body);
    $check_empty = preg_replace('/\s+/', '', $body, $title);

    if(isset($_POST['postbtn'])){
        $title = $_POST['post_title'];
        $body = $_POST['post_text'];
        $topic = $_POST['topic'];
    }

    if($check_empty != "") {


        $date_added = date("Y-m-d H:i:s");

        $added_by = $this->user_obj->getUsername();


        if($user_to == $added_by) {
            $user_to = "none";
        }


        $query = mysqli_query($this->con, "INSERT INTO posts (post_id, topic_id, post_title, post_body, added_by, user_to, date_added, user_closed, deleted, likes) VALUES('', '$topic', '$title', '$body', '$added_by', '$user_to', '$date_added', 'no', 'no', '0')");
        $returned_id = mysqli_insert_id($this->con);


        $num_posts = $this->user_obj->getNumPosts();
        $num_posts++;
        $update_query = mysqli_query($this->con, "UPDATE users SET num_posts='$num_posts' WHERE user_name='$added_by'");
    }
}

}

?>
php mysqli parse-error
1个回答
0
投票

首先,如评论中所述,您应该使用预准备语句。您对SQL注入持开放态度。

其次,对于您收到的错误,在您的类中您将$ user变量设置为查询中的结果数组。要访问该数组,您应该在getNumPosts()函数中执行类似的操作:

$usernamearray = $this->user;
$username = $usernamearray['user_name'];
© www.soinside.com 2019 - 2024. All rights reserved.