0

これらのコードの何が問題になっていますか? 私はmysqliに非常に慣れていません。私はいつもこのエラーが発生します

警告: mysqli_query() は、パラメーター 1 が mysqli であることを想定しています。11 行目の C:\localhost\path\core.php に null が指定されています エラー、クエリが失敗しました!!!

接続をテストしたところ、機能していて接続されているため、この警告が常に表示され、クエリが失敗する理由がわかりません。クエリも確認しましたが、正しいです。ここに私のコードがあります:

構成.php

<?php
$dbhost = 'xxx'; 
$dbuser = 'xxx';
$dbpass = 'xxx'; 
$dbname = 'xxx'; 

$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die ('Error connecting to mysql');

?>

core.php

<?php
require_once('configuration.php');

class Core {
    public $coreTable;
    public $result;
    public $num_rows;

    function Execute($query) {
        $this->result = mysqli_query($conn,$query) or die('Error, query failed!!!'); //line 11
        $this->row_cnt = mysqli_num_rows( $this->result );
    }
}
?>
4

3 に答える 3

3

おそらく、Core クラス外の変数に到達しようとしています。まず、ここで変数のスコープについて読みたいと思うかもしれません。

迅速で汚い解決策は次のとおりです。

$connCore クラスを初めてインスタンス化するときに変数を挿入します。

__construct() {}メソッドを Core クラスに追加します。

<?php
require_once('configuration.php');

class Core {
    public $connection; // Notice here
    public $coreTable;
    public $result;
    public $num_rows;

    /**
     * Documenting classes and methods is a good practice.
     * Constructor method
     * 
     * @param Resource $conn Mysql connection.
     * @return void
     */
    public function __construct($conn)
    {
       $this->connection = $conn;
    }

    function Execute($query) {
        $this->result = mysqli_query($this->connection,$query) or die('Error, query failed!!!'); //line 11
        $this->row_cnt = mysqli_num_rows( $this->result );
    }
  }
?>

Core クラスを初めてインスタンス化するときは、次のようにします。

$class = new Core($conn); // We are injecting the $conn here

それでおしまい。興味深いと思われる場合は、ここで依存性注入の詳細をお読みください。

于 2013-09-26T14:34:28.640 に答える
0

現在使用しているスコープに $conn が存在しません

作成時に接続をクラスに渡すか、グローバル変数 $conn を使用します

于 2013-09-26T14:23:13.507 に答える