php - 将变量传递给 mysql 查询结果为 "function query on null"

标签 php mysql

我有一个类正在向其传递查询,但出现 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/

相关文章:

php - 在 while 中从 mysql_fetch_assoc 获取重复值

php - 如何使用 Composer 生成的类映射添加不区分大小写的自动加载?

php - 如何对两个循环使用一个查询

php - Yii:在创建期间获取 Controller 操作中相关表的最后插入 ID

php - 使用 jquery 验证插件检查数据库中是否存在电子邮件

PHP Echo 的 Javascript 使用

php - 从 mysql 表数据添加 html 列表条目的简单方法

mysql - 使用 SQL WHERE IN 比较查询时始终为 true 的表达式是什么

mysql - 如何使用 Scope 在 Eloquent ORM 中选择除(A 和 B)以外的所有行?

php - 我可以存储散列的电话号码并将其未散列发送到电子邮件吗?