2016-04-11 2 views
2

Ich habe dieses Arbeitsfeld in einer PHP-Klasse-Datei wie config.class.phpVerwendung von PHP-Variablen in assoziativem Array Get Daten aus dem SQL-Datenbank

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

Nun, aus irgendeinem Grunde, den ich brauche die speichern a, b, c, d in der SQL-Datenbank & rufen Sie sie hier. Um das zu erreichen: Ich habe eine Testdatei erstellt data.php wie folgt: -

<?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. 

Jetzt, in der config.class.php Datei gibt es einige andere Dateien, die & erforderlich, wie ich das bin Modifizieren Datei, so dass die vorhandenen Syntax andere Dateien aufrufen wird, wie unten über dem Beginn der Klasse gegeben: -

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

ich die data.php hinzugefügt (die im selben Ordner ist, wo die config.class.php Datei ist) Datei darin f rste wie: -

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'; 

und geändert assoziatives Array dies mag: -

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

Aber es ist diese Variable nicht zu erkennen. Ich habe versucht, sie in anderen Variablen innerhalb config.class.php zu speichern und dann, diese Variablen in einem Array verwendet, aber immer noch auf der Ausführung: -

unerwarteter Variable $ ab ..und so weiter kommen als Error. Bitte, führe mich, wo ich falsch liege und was zu tun ist. Vielen Dank!

+1

Klingt wie ein grundlegendes Bereichsproblem. Du hast gesagt, dass du dieses Array in einer Klasse hast, und dein '$ ab' ist einfach eine globale Variable ... die kommen nicht magisch allein in eine Klasse. Sie sollten einen geeigneten Konstruktor für Ihre Konfigurationsklasse schreiben und diese Variablen als Parameter an diesen Konstruktor übergeben, damit der Konstruktor sie im Array festlegen kann. – CBroe

Antwort

0

Sie können "data.php" in "config.klass.php" einfügen, aber stellen Sie sicher, dass es keine Variablen in "config.klass.php" mit dem gleichen Namen wie von "data.php" gibt .

0
  1. Nun, zunächst einmal zu prüfen, ob Ihr $ a, $ b, $ c, $ d in Ihrem data.php gefüllt sind (von die(print_r($a)); oder so ähnlich).

  2. Wenn diese alle mit den richtigen Werten gefüllt sind, überprüfen Sie, ob Sie Ihre data.php-Datei vor dem Aufrufen Ihres Arrays oder danach einschließen, denn wenn es danach geht, wird es nicht funktionieren, weil die Datei nicht geladen wurde a, $ b, $ c, $ d-Variablen noch

  3. Vielleicht können die Variablen wegen einiger Einschränkungen nicht an Ihre Klassendatei übergeben werden, dann vielleicht erwägen Sie, sie (verschlüsselt !!) in eine der globalen Variablen zu setzen, (dh Sitzung/Cookies). => THIS A DIRTY FIX ist;) versuchen, die Option 1 und zwei FIRST :)

1

Diese Zeile des Codes,

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

eine äquivalente assoziative Anordnung von

$ab => $ba, 
haben muss

und diese Codezeile,

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

muss eine äquivalente assoziative Anordnung von

$cd => $dc 

und in Ihrem config.class.php haben, tun wie dieses

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

seine nur, dass die Variablen, die Sie in Ihrem assoziativen verwenden, nicht überein mit der Variable als Ergebnis Ihrer Abfrage.

+0

Wo muss ich eine entsprechende assoziative Anordnung erstellen? In data.php? –

+0

Schreibe es ins Innere $ admins = array ( $ ab => $ ba, $ cd => $ dc ); – Fil

+0

Ich habe es getan und jetzt gibt es mir so: Parse-Fehler: Syntaxfehler, unerwartete 'require' (T_REQUIRE), Funktion (T_FUNCTION) in path/config.class.php auf Linie 118 –

0

Sind Sie sicher, dass Sie keinen Syntaxfehler machen? Die unerwartete Variable kann manchmal bedeuten, dass Ihnen eine Klammer oder ein Semikolon fehlt.

Außerdem gibt $ab = $connect->query($a); ein ResultSet, nicht eine reguläre string/int. Sie können keine Objekte als Schlüssel in Arrays platzieren. Sie müssen Daten aus ResultSets extrahieren. Sie können mehr hier finden (zum Beispiel): http://www.w3schools.com/php/php_mysql_select.asp

Verwandte Themen