PHP创建不存在的表

PHP创建不存在的表,php,mysql,datatables,Php,Mysql,Datatables,我有一个问题,我似乎真的解决不了,也不明白为什么它不起作用。我正在尝试使用给定的代码[OOP]创建一个数据库表: 我用这个连接到我的数据库 public function __construct() { $this->$connection = new mysqli(host, user, password, table); $this->init_tables(); } 要测试连接并保存连接对象,我使用以下方法: public function get_conne

我有一个问题,我似乎真的解决不了,也不明白为什么它不起作用。我正在尝试使用给定的代码[OOP]创建一个数据库表:

我用这个连接到我的数据库

public function __construct() {
    $this->$connection = new mysqli(host, user, password, table);
    $this->init_tables();
}
要测试连接并保存连接对象,我使用以下方法:

public function get_connection(){

            if ($this->$connection->connect_errno) {
                return $this->$connection->connect_error;
            }
            else{
                return true;
            }

}
我使用我的_构造获取连接状态并将其保存到受保护的变量,如下所示:

class DBHandler{

    protected $connection;
\uu构造将mysqli对象保存到该变量中。它曾经奏效,但现在不起作用,我似乎看不出问题所在。init_tables是一个函数,如果不存在,应该创建表。以下是该函数:

public function init_tables(){
            
    if ($this->get_connection()) {


        /* Users
        -------------------------------------------------- */

        $table_users = $this->prefix.'users';
        $sql_users = "CREATE TABLE IF NOT EXISTS $table_users (
            id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
            username VARCHAR(30) NOT NULL,
            password VARCHAR(128) NOT NULL,
        )";

        $this->$connection->query($sql_users);



        /* Lists
        -------------------------------------------------- */

        $table_lists = $this->prefix.'lists';
        $sql_lists = "CREATE TABLE IF NOT EXISTS $table_lists (
            id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
            iOwnerID INT(6) NOT NULL,
            sListTitle VARCHAR(64) NOT NULL,
            bIsClosed tinyint(1),
        )";

        $this->$connection->query($sql_lists);



        /* Tasks
        -------------------------------------------------- */

        $table_tasks = $this->prefix.'tasks';
        $sql_tasks = "CREATE TABLE IF NOT EXISTS $table_tasks (
            id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
            iListID INT(6) NOT NULL,
            sTaskTitle VARCHAR(128) NOT NULL,
            bIsDone tinyint(1),
        )";

        $this->$connection->query($sql_tasks);
    }
}
我想添加一个注释,这是第一个创建表之前工作过的。这就创建了表。我复制粘贴该查询以创建所有3个。数字2和3表中的列错误地包含了错误的列。因此,我登录到我的phpmyadmin并删除了表2和表3。从那时起,它就不起作用了。它缓存了什么东西吗?我确实通过在函数内部执行一些prints()来确保调用函数。它一路工作,没有任何问题。那么问题出在哪里呢?我的柱子断了什么东西吗

我是瞎了还是瞎了?
提前谢谢。我将在这段时间内尝试寻找解决方案。

我不知道sql查询最后不允许使用逗号

错:

$sql_users = "CREATE TABLE IF NOT EXISTS $table_users (
                    id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
                    username VARCHAR(30) NOT NULL,
                    password VARCHAR(128) NOT NULL,
                )";
正确:

$sql_users = "CREATE TABLE IF NOT EXISTS $table_users (
                    id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
                    username VARCHAR(30) NOT NULL,
                    password VARCHAR(128) NOT NULL
                )";

你的PHP错误日志有什么要说的吗?@RiggsFolly我的错,忘了包括那个。我将把它添加到帖子中。@El_Vanja没有检查它们,因为我不知道日志在哪里。我会尝试找到它们。当然
如果($this->$connection->connect_errno){
只有在出现错误时才是真的,例如
>0
,所以该方法有点混乱。您是否打开了错误显示并再次尝试,以查看PHP是否会报告任何内容?