我有一个类正在向其传递查询,但出现 fatal error
function query on null'
在尝试运行查询时发生。
我回显 $mysql_statement 并得到
select * from users
这是预期的查询,但在查询语句的上下文中,它一直告诉返回 fatal error function query on null
。
关于为什么合法存储在 $mysql_statement
中的“select * from users”被解释为 null 有什么想法吗? (此处使用但未定义的属性在父类中定义):
page.php:
<?php
include("includes/database_classes.php");
new database_connection;
new database_query("SELECT * FROM users");
?>
...和database_classes.php:
<?php
/*----------------------------------------------------------------------------------------------------*/
class database_connection
{
protected $username = 'root';
protected $password = '';
protected $hostname = 'localhost';
protected $database = 'assistant';
protected $database_handle;
function connect()
{
try
{
$database_handle = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
}
catch (PDOException $e)
{
print "Error!: " . $e ->getMessage() . "<br/>";
die();
}
}
}
/*----------------------------------------------------------------------------------------------------*/
class database_disconnection extends database_connection
{
function disconnect()
{
$database_handle = null;
}
}
/*----------------------------------------------------------------------------------------------------*/
class database_query extends database_connection
{
protected $mysql_statement;
function __construct( $mysql_statement )
{
$this->mysql_statement = $mysql_statement;
echo $mysql_statement;
foreach($this->database_handle->query("$mysql_statement")->fetch_assoc() as $row) {
print_r($row);
}
}
}
/*----------------------------------------------------------------------------------------------------*/
最佳答案
我认为您在尝试循环 SQL 查询结果时遇到问题,发生这种情况是因为您没有包含方法“fetch_assoc()”
而不是:
foreach($this->database_handle->query("$mysql_statement") as $row);
为什么不呢?
foreach($this->database_handle->query("$mysql_statement")->fetch_assoc() as $row)
关于php - 将变量传递给 mysql 查询结果为 "function query on null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44004481/