note 86290 deleted from function.mysql-query by danbrown

From: Date: Sat, 11 Oct 2008 11:50:31 +0000
Subject: note 86290 deleted from function.mysql-query by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-145270@lists.php.net to get a copy of this message
Note Submitter: Mark Herrmann Reason: non-english ---- Problem: - Lese mehrfach beliebige Daten aus verschiedenen Tabellen mit unterschiedlichen Datenstrukturen (Konfig, Listen, etc.) - Vermeidung von Redundanzen (diverse Funktionen die Daten aus Tabellen lesen jeweils auf die Tabelle angepasste Strukturen, Abfragen etc.) Lösung: - "EINE" universell einsetzbar Funktion, die meine Daten in Form eines Arrays zurück gibt Die EINE Funktion wird wie folgt aufgerufen: $content = read_value_from_db("close", $db, $db_server, $db_name, $db_pass, "ch_config", "id, searchkey, content_varchar, content_bigint, content_decimal, description", "id"); "close/open" legt fest ob die Verbindung zur DB geschlossen wird oder offen bleiben soll. (Bei vielen Abfragen auf einer Seite schließt erst die letze die Verbindung) $db, $db_server, $db_name, $db_pass sind die vorher global festgelegten Parameter deiner Datenbank (die brauchst Du sonst ja auch) "ch_config" ist in diesem Beispiel der Name meiner Konfigurationstabelle, die momentan ausgelesen werden soll "id, searchkey, content_varchar, content_bigint, content_decimal, description" diese Felder der Tabelle sollen ausgelesen werden "id" dies ist der Sortierschlüssel für die aktuelle Abfrage Die Daten werden anschließend wie folgt weiterverarbeitet: (liegen ja in einem Array namens $content): $content_size = $content[arraysize][0]; ... ist für jede Abfrage standartmässig vorhanden und gibt die Anzahl der Datensätze (Zeilen) zurück, die gelesen wurden Die Daten selbst sind im Array wie folgt angeordnet: Array[schlüssel][zähler] ...schlüssel = die feldnamen deiner tabelle, die du abgefragt hast (id, searchkey, content_varchar, content_bigint, content_decimal, description) ...zähler = ist die aktuelle Zeilennummer der Abfrage beginnend bei 0 bis Anzahl der gefundenen Datensätze Entweder ich spreche das Feld direkt an: Bsp. echo $content['searchkey'][1] ... dies zeigt mir das erste gefundene Vorkommen meiner Abfrage Inhalt des Feldes "Searchkey" oder eleganter ich lasse alles anzeigen in einer Schleife (zur Erinnung die Anzahl der gefundenen Daten steht immer in $content[arraysize][0] for ($zreg = 0; $zreg <= $content[arraysize][0]; $zreg++) { echo $content['id'][$zreg] echo $content['searchkey'][$zreg] echo $content['content_varchar'][$zreg] ... bis echo $content['description'][$zreg] } Zum Schluss noch der Quellcode für die EINE Funktion, die das auslesen der Daten übernimmt: function read_value_from_db($db_endstate, $db, $db_server, $db_name, $db_pass, $var_database, $var_items, $var_order) { // diese Funktion liest Daten aus einer Datenbank $ausgabe = ""; $items = explode(', ', $var_items); $zreg = 0; $zreg2 = 0; $dbh = mysql_connect($db_server, $db_name, $db_pass); $query = "use " . $db; if (!mysql_query($query, $dbh)) die("Datenbank existiert nicht.n"); $anfrage = "SELECT " . $var_items . " FROM " . $var_database . " ORDER BY " . $var_order; $inhalt = mysql_query($anfrage); while($zeile=mysql_fetch_row($inhalt)) { $ausgabe['arraysize'][0] = $zreg; for ($zreg2 = 0; $zreg2 < count($items); $zreg2++) { $ausgabe[$items[$zreg2]][$zreg] = $zeile[$zreg2]; } $zreg++; } if ($db_endstate != "open") { if ($closecfg == "close") { mysql_close(); } } else { $num_rows = "variable open/close zum funktionsaufruf fehlt"; } return $ausgabe; } // *** end function ***

« previous php.notes (#145270) next »