【发布时间】:2017-10-15 20:56:20
【问题描述】:
我觉得我在 PHP 中遗漏了一些关于 OOP 的内容。我已经阅读了许多关于连接到 mysql 的教程,但一直遇到错误,告诉我我的数据库句柄不存在,即使它确实连接了。我有以下代码,并且一切都正确连接,但是当我尝试使用 $connection->close 关闭连接时(我知道 PHP 在脚本完成时关闭连接,但这对我来说也是一个学习练习) ();我收到 $database_handle 未定义的通知,因此 mysqli_close($database_handle) 引用了一个 NULL 变量并返回一个致命错误。
为什么 $connection->connect();工作和 $connection->close();返回一个致命错误?
类:
<?php
class database_connection {
var $hostname = 'localhost';
var $username = 'root';
var $password = '';
var $database = 'assistant';
var $database_handle;
function connect()
{
$database_handle = mysqli_connect($this->hostname, $this->username, $this->password, $this->database);
if (!$database_handle)
{
die('Could not connect to database!');
}
else
{
$this->database_handle = $database_handle;
echo 'Connection established!';
}
return $this->database_handle;
}
function close()
{
mysqli_close($database_handle);
echo 'Connection closed!';
}
}
?>
引用page.php:
<?php
include 'includes/database_classes.php';
$connection = new database_connection();
$connection->connect();
$query = 'SELECT * FROM `users`';
$result = mysqli_query($connection->database_handle, $query);
if($numrows = mysqli_num_rows($result))
{
echo "<br>";
echo $numrows;
echo "<br>";
while ($row = mysqli_fetch_assoc($result))
{
$database_username = $row['user_name'];
$database_password = $row['user_password'];
echo $database_username;
echo $database_password;
}
}
$connection->close();
?>
【问题讨论】:
-
因为你已经关闭了
page.php中的连接 -
连接通常不需要关闭,它们会在脚本执行结束时自行关闭
-
您使用的是什么版本的 PHP?用于变量定义的 var 至少在几个主要版本的 PHP 中都没有使用
-
嗨 Riggs - 它具体在哪里关闭?我明白你在说什么,因为如果连接关闭,数据库句柄将为空,但是在我调用 $connection->close(); 之前它具体关闭在哪里? ?
-
我正在使用 php 7。我实际上认为这些应该受到保护,但我正在偷工减料,所以我可以先得到一般的理解,而 var 是我想到的第一件事就是得到它去。