【发布时间】:2021-07-08 09:55:56
【问题描述】:
我有一个问题,我似乎真的无法解决或无法理解它为什么不起作用。我正在尝试使用给定的代码 [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;
}
}
我使用我的 __construct 获取连接状态并将其保存到受保护的变量中,如下所示:
class DBHandler{
protected $connection;
__construct 将 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() 来确保调用了该函数。它一直有效,没有问题。那么可能是什么问题呢?我的列有什么问题吗?
我是不是搞错了什么,还是我只是瞎了眼? 提前致谢。在此过程中,我会尝试寻找解决方案。
【问题讨论】:
-
你的PHP错误日志有什么要说的吗?
-
@RiggsFolly 我的错,忘了包括那个。我会把它添加到帖子中。
-
@El_Vanja Havent 检查了它们,因为我不知道日志的位置。我会试着找到他们。
-
当然
if ($this->$connection->connect_errno) {只有在有错误 即>0时才会为真,所以这个方法有点混乱 -
你有没有打开错误显示,再试一次看看PHP会不会报什么?
标签: php mysql datatables