0

私は PHP OOP にかなり慣れていませんが、次の PHP コードが次のエラーを返していますが、その理由がわかりません。誰かがおそらく明らかなエラーを指摘できれば、私は最も感謝しています

致命的なエラー: C:\tester で未定義の関数 get_column_names() を呼び出します

class tester
{
    public $database_name;
    public $auto_increment_col; 
    public $foreign_key_array;
    public $column_names;

    function __construct($wpdb,$tablename) 
    {
        $this->database_name        = get_database_name();
        $this->auto_increment_col   = get_auto_increment_field($tablename);
        $this->foreign_key_array    = get_foreign_keys($tablename);
        //$this->column_names       = $wpdb->get_results( "SHOW COLUMNS FROM $tablename");
        $this->column_names         = get_column_names($wpdb,$tablename);
    }

    protected function get_column_names($wpdb,$tablename)
    {
        return $wpdb->get_results( "SHOW COLUMNS FROM $tablename"); 
    }

    protected function get_database_name() 
    {
        $r = mysql_query("SELECT DATABASE()") or die(mysql_error());
        return mysql_result($r, 0);
    }

    protected function get_auto_increment_field($tablename)
    {
        $sql = "describe $tablename";
        $result = mysql_query($sql);
        while ($row = mysql_fetch_assoc($result))
        {
            if ($row['Extra'] == 'auto_increment')
            {
                return($row['Field']);
            }
        }
        return(null);
    }
    protected function get_foreign_keys($wpdb,$tablename)
    {
        $foreign_keys = array();

        $sql = "select *
          FROM information_schema.TABLE_CONSTRAINTS i
          LEFT JOIN information_schema.KEY_COLUMN_USAGE k ON i.CONSTRAINT_NAME = k.CONSTRAINT_NAME
          WHERE i.CONSTRAINT_TYPE = 'FOREIGN KEY'
          AND i.TABLE_SCHEMA = DATABASE()
          AND i.TABLE_NAME = '$tablename'";

        $rows = $wpdb->get_results($sql);

        if (count($rows) == 0)
            return(null);
        else
            return($rows);
    }




}
4

1 に答える 1

4

$thisオブジェクトメソッドを呼び出すときに欠けています:

$this->column_names = $this->get_column_names($wpdb,$tablename);
// ... and so on
于 2013-07-06T03:01:43.950 に答える