ホームページ > バックエンド開発 > PHPチュートリアル > 修正してください。ありがとうございます。致命的なエラー: 非オブジェクトに対するメンバー関数 query() の呼び出しです。

修正してください。ありがとうございます。致命的なエラー: 非オブジェクトに対するメンバー関数 query() の呼び出しです。

WBOY
リリース: 2016-06-23 13:46:15
オリジナル
1228 人が閲覧しました

タイトルの通り、エラーが発生しました。致命的なエラー: D:WWW2shouclassBulletin.php の 47 行目で非オブジェクトのメンバー関数 query() を呼び出します
コードは次のとおりです:
//このクラスはデータベース アクセス操作を保存するために使用されますtable Bulletin
// テーブルの各フィールドは、クラス
のメンバー変数に対応します。 Class Bulletin
{
public $Id; // レコード番号
public $Title // お知らせのタイトル
public $Content;
public $PostTime; // リリース日
public $Poster; // Publisher
var $conn;

function __construct() {
// データベースに接続します
$this->conn = mysqli_connect(" root", "pass ", "2shou");
mysqli_query($this->conn, "SET NAMES gbk");
}

function __destruct() {
// 接続を閉じる
mysqli_close($this- >conn);
}

// お知らせ情報を取得します
function GetBulletinInfo($bid) {
// クエリの SELECT ステートメントを設定します
$sql = "SELECT * FROM Bulletin WHERE Id='" 。 "'";
// レコードセットを開く
$results = $this->conn->query($sql);
// アナウンスデータを読み取る
if($row = $results->fetch_row()) {
$this->ID = $bid;
$this->タイトル = $row[1];
$this->PostTime = $row [3];
$this ->Poster = $row[4]; }
else {
$this->Id=0; }
}
// すべてのアナウンス情報を取得して結果セットを返す
function GetBulletinlist() {
/ /クエリの SELECT ステートメントを設定します
$sql = "SELECT * FROM Bulletin ORDER BY PostTime DESC"
$results = $this->conn->query($sql);
return $results; }

// すべてのアナウンス情報を取得し、結果セットを返す
function GetRecentBulletinlist() {
// クエリの SELECT ステートメントを設定
$sql = "SELECT * FROM Bulletin WHERE DateDiff(day, getdate(), Posttime)<=7";
$results = $this->conn->query($sql);
return $results;
}

// お知らせ情報を追加
function insert() {
$sql = "箇条書き (タイトル、内容、投稿時刻、ポスター) の値に挿入 ('" . $this->Title . "','" . $this->Content . "','" . $this->PostTime . "','" . $this->Poster . "')"
$this->conn->query($sql);
// お知らせ情報を変更します
function update($bid) {
$sql = "UPDATE Bulletin SET Title='" . "', Content='" . ', PostTime='" . $this->PostTime . "', Poster='" . $this->Poster . "' WHERE Id=" . $bid;
// お知らせ情報の一括削除
関数delete($bid) {
$sql = "DELETE FROM Bulletin WHERE Id IN (" . $bid . ")"
// SQL ステートメントを実行
$this->conn- >query($sql); }
}
?>


ディスカッションに返信 (解決策)

コンストラクターに入ります

function __construct() {
// データベースに接続します
$this->conn = mysqli_connect("localhost", " root" , "pass", "2shou");
mysqli_query($this->conn, "SET NAMES gbk");
}
つまり、 $this->conn はリソースです
が、他のリソースでは $results を使用します。アクセス用のメソッド = $this->conn->query($sql);
それでは、$this->conn が再びオブジェクトになったのはいつでしょうか?

したがって、コンストラクターは
function __construct() {  $this->conn = new mysqli("localhost", "root", "pass", "2shou");  $this->conn->set_charset('gbk');}
ログイン後にコピー
と書く必要があります


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート