mysqlクラスの一部の関数にアクセスしようとしたときに問題が発生しています。次のように私は私のデータベースに接続する必要があり機能は次のとおりです。mysql_connectでリソースタイプが「不明」
function connect_DB() {
$this->connection = mysql_connect($this->dbURL, $this->dbUser, $this->dbPass) or trigger_error('Connection failed: ' . mysql_error($connection), E_USER_ERROR);
$this->db = mysql_select_db($this->dbName, $this->connection) or trigger_error('Database selection failed: ' . mysql_error($db), E_USER_ERROR);
}
そして私は、この使用して私のmysqlのオブジェクトを作成します。
$dbConf = new StoreConfDB();
$dbConf->connect_DB();
を今私は、列のすべてをつかむことになっている機能を持っています指定されたテーブルの名前。コード:
function get_db_columns($table) {
global $dbConf;
print_r($dbConf->get_db());
$result = $dbConf->query_DB_resource('SELECT * FROM ' . $table);
for($i = 0; $i < mysql_num_fields($result); $i++) {
$meta = mysql_fetch_field($result, $i);
$fields[] = $meta->name;
}
mysql_free_result($result);
return $fields;
}
しかし、私のようなエラーが、取得しています:
Warning: mysql_query(): 5 is not a valid MySQL-Link resource
を私はするmysql_query呼び出しから接続引数を削除しようとする場合、私はこれを取得:
今Notice: Could not run query: No database selected in ...
私はデバッガを実行しており、問題の内容を正確に把握しています(私は思っています)。クラスが動作すると、接続変数を次のように設定されていますresource id='5' type='mysql link'
しかし、それはget_db_columns()
関数の内部からのmysqlクラスのクエリ関数を呼び出すと、接続変数は次のとおりですので、何とか接続変数はめちゃめちゃますresource id='5' type='Unknown'
両方の接続変数が同じものでなければならないのでしょうか? ($dbConf
から)?私は2つの異なる場所でこの機能をテストしました。助けてください!
@footy:$ dbConf上
ますprint_rを返します。
StoreConfDB Object ([dbURL] => localhost [dbUser] => root [dbPass] => [dbName] => db1 [connection] => Resource id #5 [db] => 1)
query_DB_resource機能を:
function query_DB_resource($query) {
$sql_query = mysql_query($query) or trigger_error('Could not run query: '. mysql_error());
return $sql_query;
}
$ dbConf変数が* get_db_columns($ table)*関数を呼び出す前に*初期化されているかどうか確かめてください。より安全なメソッドを作成するには、データベース接続をコンストラクタに入れて、毎回DB接続に接続していることを確認してください。 – footy
* query_DB_resource *関数も投稿できます。それには誤りがあるかもしれません。もっと良いことに、全体のページをここに投稿すると、人々が包括的な見た目を簡単に得ることができます。 – footy