0

示されているように、ライブラリから関数にアクセスしようとしているときに、上記のエラーが発生します...

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class My_crud {

public function select_from($select, $from) {
    // dafaults
    $output = "";
    // querying
    $this->db->select($select);
    $this->db->from($from);
    $query = $this->db->get();
    // if no rows returned
    if ($uqery->num_rows == 0) {
        return $output = "No Results Found";
    }
    // if row(s) retunred
    return $output = $query->result_array();
}
}

databaseライブラリが自動ロードとして設定されている間。

4

3 に答える 3

3

ライブラリで作成している場合は、CI のインスタンスを取得する必要があります。__construct

class My_crud
{
 var $ci;
 public function __construct()
 {
  $this->ci =& get_instance();
 }
}

次に、クラス内のメソッドを に変更this->dbする$this->ci->dbと、問題は、モデル内でライブラリを作成できるのに、なぜライブラリでクラッドを作成するのかということです。

于 2013-04-09T02:20:12.710 に答える
1

CodeIgniter スーパー オブジェクト リソースを利用する場合は、 ライブラリ内の CodeIgniter リソースの利用get_instance()に記載されているように、関数を使用する必要があります。

$CI =& get_instance();
$CI->db->select($select) ...
于 2013-04-09T02:17:32.293 に答える
0

あなたのクラスは何かを拡張する必要があります。現在のセットアップ方法は、存在しないクラス内のパラメーター$this->dbを探しています。$dbMy_crud

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class My_crud extends CI_Model {

    public function select_from($select, $from) {
        // defaults
        $output = "No Results Found";

        // querying
        $query = $this->db
            ->select($select)
            ->get($from);

        if ($query->num_rows() > 0)
            $output = $query->result_array();

        return $output;
    }
}
于 2013-04-09T02:00:26.807 に答える