プロジェクトでは、meekrodb という名前の mysql ライブラリを使用しています。独自の mysql 関数を使用して拡張クラスを作成したいので、ライブラリが更新された場合は、拡張クラスを再編集するだけです。
初心者のプログラマーとして、次のようにライブラリを拡張しようとしました。
require './libs/meekrodb.2.0.class.php';
class Database_extend extends MeekroDB {
protected $db;
protected $database='';
function __construct($server=null, $user=null, $pass=null, $database=null)
{
// Creating a database object
$this->db= parent::__construct();
//$this->db= parent::__construct($server,$user,$pass,$database);
$this->database=$database;
} */
public function table_exists($tableName=null) {
if(is_null($tableName )){
trigger_error("Error in: ".__METHOD__." Missing table name.",E_USER_ERROR);
}
else{
$sql = "SELECT COUNT(*) AS count FROM information_schema.tables WHERE table_schema = '$this->database' AND table_name = '$tableName'";
$exists=$this->db->query($sql);
if($exists['count']>0)
{ return TRUE;}
else { return FALSE;}
}
}#-table_exists
このクラスをテストすると (test.php)
require './config.inc.php';
require './libs/Session.php';
require_once './libs/Ngram.class.php';
require_once './libs/Database_extend.class.php';
/*require_once './libs/meekrodb.2.0.class.php';*/
DB::$user=DB_USER;
DB::$password=DB_PASS;
DB::$dbName=DB_DATABASE;
$db1=new Database_extend(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE);
$t=$db1->query("SELECT * FROM temp LIMIT 0,1");
//var_dump($t); //THIS WORKS
var_dump($db1->table_exists('tem')); // THIS DOESN'T work
「非オブジェクトでメンバー関数 query() を呼び出す」というエラーが表示されます。これは、db 変数がオブジェクトではないことを意味します。
どうすればこれを正しく解決できますか?