これが状況です。3つのPHPファイルをすべて同じプロジェクトフォルダーに作成しました。
- constants.php
- Mysql.php(クラス)
- index.php
index.phpを実行すると、次のようになります。
致命的なエラー:C:\ wamp \ www \ MyBlog \ MyClass \ MySql.phpの行#にある非オブジェクトでメンバー関数prepare()を呼び出す
constants.php:
<?php
//Define constent her
define('DB_SERVER', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'myblog');
Mysql.php:
<?php
require_once 'constants.php';
class MySql{
private $conn;
protected $_query;
function __constructert() {
$this->conn = new mysqli(DB_SERVER,DB_USER,DB_PASSWORD,DB_NAME) or
die("There was a probelm connecting the database");
return $this->conn;
}
protected function _prepareQuery()
{
//her the line that problem come from beetwen the () of if :
if (!$stmt = $this->conn->prepare($this->_query)) {
trigger_error("Problem preparing query", E_USER_ERROR);
}
return $stmt;
}
protected function _dynamicBindResults($stmt){
$meta=$stmt->result_metadata();
while ($field = $meta->fetch_field()) {
print_r($field);
}
}
function query($query){
$this->_query = filter_var($query,FILTER_SANITIZE_STRING);
$stmt = $this->_preparequery();
$stmt->execute();
$results=$this->_dynamicBindResults($stmt);
}
index.php:
<? PHP
include 'MySql.php';
$Db= new MySql();
$Db->query("select * from status");
私が言ったように、index.phpを実行すると、次のようになります。
致命的なエラー:オンラインのC:\ wamp \ www \ MyBlog \ MyClass \ MySql.phpにある非オブジェクトのメンバー関数prepare()を呼び出す
その行は次のとおりです。
if (!$stmt = $this->conn->prepare($this->_query)) {
詳細については、データベースへの接続をテストしましたが、問題ありません。_query
プロパティがSQLステートメントを受け取るかどうかをテストしました。