2016-04-11 8 views
2

からデータを取得するために連想配列内のPHP変数を使用して、私は保存する必要があるいくつかの理由でconfig.class.php今SQLデータベース

var $admins = array("a" => "b", "c" => "d"); 

のようなPHPのクラスファイルでこの作業用配列を、持っていますa、b、c、dのSQLデータベース&をここに呼び出します。それを達成するために:私は以下のようにdata.phpテストファイルを作成: -

<?php 
$x = "localhost"; 
$y = "user"; 
$z = "pass"; 
$xyz = 'db-name'; 

// Create connection 
$connect = mysqli_connect($x, $y, $z, $xyz); 

// Check connection 
if (!$connect) { 
    die("Connection Error: " . mysqli_connect_error()); 
} 

$a = 'SELECT name FROM admin WHERE id = "aaaa";'; 
$b = 'SELECT pass FROM admin WHERE id = "aaaa";'; 
$ab = $connect->query($a); 
$ba = $connect->query($b); 

$c = 'SELECT name FROM admin WHERE id = "bbbb";'; 
$d = 'SELECT pass FROM admin WHERE id = "bbbb";'; 
$cd = $connect->query($c); 
$dc = $connect->query($d); 
?> 

// id is a string not int in my case. 

config.class.phpファイルで、私は変更していますよう&を必要と他のいくつかのファイルがありますファイルの他のファイルを呼び出すの既存の構文は、クラスの開始上記以下のように与えられるように、: - 私はconfig.class.php同じフォルダにあるdata.phpを(追加

require_once dirname(__FILE__)."/file1.php"; 
require_once dirname(__FILE__)."/file2.class.php"; 
require_once dirname(__FILE__).'/file3.class.php'; 

ファイルは)それのファイルですIRSTとして: -

require_once dirname(__FILE__)."/data.php"; 
require_once dirname(__FILE__)."/file1.php"; 
require_once dirname(__FILE__)."/file2.class.php"; 
require_once dirname(__FILE__).'/file3.class.php'; 

、これを好きに連想配列を変更: -

var $admins = array($ab => $bc, $cd => $dc); 

しかし、それはこれらの変数を認識していません。私はconfig.class.php内の別の変数に保存しようとしたし、その後、アレイ内でまだ実行時にこれらの変数を使用: -

予期しない変数$ abが ..andようにと来ていますエラー。私が間違ってやっていることをどこに案内してください。ありがとうございました!

+1

基本的な範囲の問題のような音がします。あなたはクラス内にその配列があり、あなたの '$ ab'は単なるグローバル変数であると言っています...それらは魔法のようにすべて自分自身でクラスに入るわけではありません。あなたは、あなたの設定クラスのための適切なコンストラクタを書いて、そのコンストラクタをそれらの配列に設定できるように、そのコンストラクタにパラメータとして渡すべきです。 – CBroe

答えて

0

"config.class.php"に "data.php"を含めることができますが、 "config.class.php"には "data.php"と同じ名前の変数がないことを確認してください。

0
  1. すべての最初さて、あなたの$ A、$ bのは、$ C、$ dは(die(print_r($a));または似たようなことで)あなたのdata.phpに充填されている場合は、確認してください。

  2. これらがすべて適切な値で満たされている場合は、配列を呼び出す前にdata.phpファイルをインクルードするかどうかを確認してください。ファイルが$をロードしなかったために動作しない場合$ b、$ c、$ dの変数はまだありません

  3. 多分、変数はいくつかの制限のためにあなたのクラスファイルに渡されるかもしれませんし、多分それらを(グローバル変数の1つに) (すなわち、セッション/クッキー)。 =>これはDIRTY FIX IS;)あなたのコードのこの行オプション1と2 FIRST :)

1

を試し、

$ab = $connect->query($a); 
$ba = $connect->query($b); 

$ab => $ba, 
の同等の連想配列を持っている必要があります

とこのコード行は、

$cd = $connect->query($c); 
$dc = $connect->query($d); 

この

require 'data.php'; 
$admins = array(
$ab => $ba, 
$cd => $dc 
); 

そのあなたの連想で使用している変数が一致していないだけというように行う、

$cd => $dc 

とあなたのconfig.class.phpでの同等の連想配列を持っている必要がありますあなたのクエリの結果としての変数と一緒に。

+0

同等のアソシエイティブな契約はどこで作成する必要がありますか? data.phpで? –

+0

内部に$ admins = array( $ ab => $ ba、 $ cd => $ dc )と書いてください。 – Fil

+0

私はそれをして、今このようにしています:構文エラー、予期しない 'require'(T_REQUIRE)、期待している関数(T_FUNCTION)のパス/ config.class.php 118行 –

0

構文エラーが発生していませんか? 予期しない変数は、ブラケットやセミコロンが不足していることがあります。

また、$ab = $connect->query($a);は、通常のstring/intではなく、ResultSetを返します。オブジェクトをキーとして配列に配置することはできません。 ResultSetからデータを抽出する必要があります。あなたはここでもっと見つけることができます:http://www.w3schools.com/php/php_mysql_select.asp

関連する問題