0

私はここでは新人です。開発中のサイトに問題があります。修正方法を教えてください。

これは完全なエラー ステートメントです。

致命的なエラー: C:\xampp\htdocs\koa\classes\class.ManageUsers.php の 20 行目で未定義のメソッド dbConnection::query() を呼び出します。

オブジェクト指向の方法で PHP と MySQL を使用しています。

エラーが指している class.ManageUsers.php のコードは次のとおりです。関数全体をここに置きます。

function LoginUsers($username,$password){
    $query = $this->db->query("SELECT * FROM users WHERE username = '$username' AND password = '$password'");
    $num_rows = $this->link->fetchRows();
    return $num_rows;
}

20 行目は次のとおりです。

$query = $this->db->query("SELECT * FROM users WHERE username = '$username' AND password = '$password'");

また、ここに構築関数:

function __construct(){
    $this->db = new dbConnection();
    $this->db->connect();
}

dbConnection クラスは次のとおりです。

class dbConnection{
    protected $db_conn, $_query, $_numRows, $_fetchAll;
    public $db_name = '******';
    public $db_user = '******';
    public $db_pass = '******';
    public $db_host = '******';

    function connect(){ 
        $this->db_conn = mysql_connect($db_host, $db_user, $db_pass);
        mysql_select_db($db_name, $this->db_conn);
        if(mysql_errno($this->db_conn){
            return mysql_error($this->db_conn);
        }
        else{
            return $this->db_conn;
        }
    }

    public function query($sql){
        $this->_query = mysql_query($sql, $this->db_conn);
        $this->_numRows = mysql_num_rows($this->_query);
        $this->_fetchAll = mysql_fetch_array($this->_query);
    }
}
?>
4

2 に答える 2

1

以下のコードを使用して、dbConnection.php ファイルの正しいパスを指定してください。これは単なるサンプル コードです。

function __construct(){
include_once('dbConnection.php");
    $this->db = new dbConnection();
    $this->db->connect();
}
于 2013-03-14T08:55:54.277 に答える
0

期待するクラスのバージョンを使用していないようです。あなたはそれをテストすることができます

class ... {
  function LoginUsers($username,$password){
    ..
    foo($this->db, 'query');
    $query = $this->db->query("SELECT * FROM users ...")
    ..
  }
  ...
}

function foo($obj, $testFnExists=null) {
    $abort = false;
    $ro = new ReflectionObject($obj);
    printf("<pre>\nClass: %s\n", $ro->getName()); 
    printf("defined at %s@%d\n", $ro->getFileName(), $ro->getStartLine());
    printf("object has the following public methods:\n");
    foreach( $ro->getMethods(Reflectionmethod::IS_PUBLIC) as $m ) {
        printf("  %s\n", $m->getName());
    }
    if ( !is_null($testFnExists) ) {
        if ( !$ro->hasMethod($testFnExists) ) {
            $abort = true;
            $methodExists = 'no';
        }
        else {
            $methodExists = 'yes';
        }
        printf("method '%s' exists: %s\n", $testFnExists, $methodExists);
    }
    printf("</pre>\n");
    flush();
    if ( $abort ) {
        die;
    }
}

出力は次のようになります

<pre>
Class: dbConnection
defined at test.php@4
object has the following public methods:
  foo1
  foo2
method 'query' exists: no
</pre>
于 2013-03-14T09:38:35.390 に答える