这个问题在这里已有答案:
不确定我哪里出错了。我正在尝试创建一个论坛,我一直收到此错误消息。
“解析错误:语法错误,意外'[',期望标识符(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'");
}
}
}
?>
首先,如评论中所述,您应该使用预准备语句。您对SQL注入持开放态度。
其次,对于您收到的错误,在您的类中您将$ user变量设置为查询中的结果数组。要访问该数组,您应该在getNumPosts()
函数中执行类似的操作:
$usernamearray = $this->user;
$username = $usernamearray['user_name'];