2017-05-16 42 views
0

我有一個類,我傳遞一個查詢到,但致命的錯誤「上的空函數查詢」

功能查詢上的空」

發生傳遞變量到MySQL查詢結果當試圖運行查詢時。

我贊同$ mysql_statement並獲得

select * from users 

這是預期的查詢,但在查詢語句的上下文中,它總是告訴返回致命錯誤function query on null

有關爲什麼合法存儲在$mysql_statement中的「select * from users」被解釋爲空的任何想法? (使用的屬性,在這裏沒有定義在父類中定義):

的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); 
      } 
     } 

    } 

/*----------------------------------------------------------------------------------------------------*/ 
+0

這是一個數組我想? '$ this-> database_handle-> query(「$ mysql_statement」)' – Akintunde007

+0

所以基本上你的屬性database_handle沒有得到正確的初始化 – zenwraight

+0

你最好告訴我們'database_connection'類 – RiggsFolly

回答

0

我想您嘗試循環查詢SQL查詢的結果時遇到問題,這是因爲您沒有包含方法「fetch_assoc()」

而不是:

foreach($this->database_handle->query("$mysql_statement") as $row); 

爲什麼不呢?

foreach($this->database_handle->query("$mysql_statement")->fetch_assoc() as $row) 
+0

謝謝你的回答,Alien Whale,但我仍然在使用提取後收到同樣的錯誤。 – user4333011

+0

檢查你的連接是否真正連接 –

+0

另外,'$ database_handle = new PDO(..)'必須讀取'$ this-> database_handle = new PDO(..)' – Adder