ホームページ >バックエンド開発 >PHPチュートリアル >兄さん、おっとどうしたの?静的変数に関する問題なのでしょうか?

兄さん、おっとどうしたの?静的変数に関する問題なのでしょうか?

WBOY
WBOYオリジナル
2016-06-13 12:58:48782ブラウズ

私の何が問題なのですか?静的変数に問題があるのでしょうか?

class db{<br />
	public $conn;<br />
    private static $h = "localhost";<br />
    private static $u = "root";<br />
    private static $p = "123123";<br />
    private static $d = "air";<br />
	function __construct(){<br />
		$this->conn=mysqli_connect(self::$h,self::$u,self::$p,self::$d);<br />
		$this->conn->query('SET NAMES UTF8');<br />
		//mysqli_query($this->conn,'SET NAMES UTF8');<br />
	}<br />
    public function getOne($sql,$resultType=MYSQL_ASSOC){//只取一条<br />
    	$q=$this->conn->query($sql);<br />
    	$rt=$q->fetch_array($resultType);<br />
    	return $rt;<br />
    }<br />
}<br />
//下面是一个继承类,就是上面的那个db我写好了后。有只要引用数据库(只取一条的,取多条我未写出)便来继承。这样写不好吗?谢谢<br />
	class airVia extends db{<br />
		public function doSql(){<br />
			$sql='select * from xls1 where id=1';//实际中的语句复杂,只是测试<br />
			$r=$this->getOne($sql);//db::getone($sql);不行<br />
			return $r; <br />
		}<br />
	}//airVia<br />
//使用此类<br />
$wc=new airVia($v);echo $wc->doSql();<br />


エラーメッセージは次のとおりです:
致命的なエラー: D:xampphtdocschaxunclassdb.class.php の 67 行目
の非オブジェクトに対するメンバー関数 query() の呼び出し 質問してください:
私の考えは正しいでしょうか?ありがとうございます
1. データベースに接続するための DB クラスを作成します。ライブラリがデータベースを操作する場合は、それを継承します。 次に、上記のステートメントでエラーが報告されるのはなぜですか? $this->conn を静的変数に置き換えることはできないようです。

------解決策----------------------conn オブジェクトが正常に生成されていないはずです。 、確認してください。パラメータなどについては、 conn オブジェクトを出力して、それが何であるかを確認してください

------解決策------ --致命的なエラー: 非オブジェクトのメンバー関数 query() の呼び出し
$this->conn=mysqli_connect(self::$h,self::$u,self::$p,self::$d);
インスタンス化は成功しませんでした

しかし、コードに問題はなく、テストは正常にパスします (もちろん、ユーザー名、パスワード、ライブラリ名、テーブル名は変更されています)
エラーは他の場所で発生する可能性があります。既に 67 行目にあります。何件投稿しましたか?

カプセル化されているため、エラー処理もカプセル化する必要があります。したがって、何か問題が起こった理由を尋ね回らないでください

-----解決策-------------------------- ------親クラスのコンストラクターメソッドを初期化する必要があります

-----解決策------------- ------------- がサブクラス airVia にコンストラクター
を追加します。
public function __construct(){<br />
parent::__construct();<br />
}

-----解決策--------------------------------再構築が必要です。

引用:サブクラス airVia にコンストラクターを追加します
PHP コード?123パブリック関数 __construct(){parent::__construct();}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。