mysql_fetch_array()
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
antwort
arbeiten
array
bestimmten wert zugreifen
code
ersten datensatz
host
lehrer
machen
null
problem
re
reden
schleife
sorgen
stelle
stunde
test
union
url
-
So habe da so ein kleines ref="/tag/problem">Problem mit mysql_fetch_array()
und zwar ich nehme mir einen Datensatz aus der DB per SELCET und speichere ihn dann ab und will ihn verarbeiten, so das funktionert auch so, nur das Problem ist das ich ganz sicher weiß das es Zwei Rückgabewerte gibt doch egal was ich versuche ich bekomme den Zweiten Wert nicht heraus.
<?php $hos = "localhost"; $db = 'test'; $user = "user"; $pw = "******"; $query = "SELECT stunde FROM `Lehrer`"; $connection = mysql_connect($host,$user,$pw); mysql_select_db($db); $stunde = mysql_query($query); $stunde_result = mysql_fetch_array($stunde); echo $stunde_result;
Beitrag zuletzt geändert: 22.7.2011 1:43:41 von xxbashxx -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
xxbashxx schrieb:
klar doch! du musst es mit while machen. sihe de.php.net.
... egal was ich versuche ich bekomme den Zweiten Wert nicht heraus.
(nebenbei gibt es noch mysql-fetch-row und auch mysql-fetch-assoc je nach bessere verwendbarkeit.)
lg
==== seltsam seltsam
es hat eine funktion da gegeben, wenn jemand dazwischen gepostet hat wurde man gewarnt, dass jemand bereits eine antwort abgegeben hat. warum neulich nicht???? von der posting von @drafed-map VOR mir habe nichts mitbekommen beim schreiben.
Beitrag zuletzt geändert: 22.7.2011 1:54:50 von hemiolos -
Vielen Dank für die Antworten
EDIT
So das hätte ich jetzt raus aber nun möchte ich an einer stelle auf einen bestimmten Wert zugreifen uns zwar einmal auf den Ersten und einmal auf den Zweiten. So das Problem bei der Whileschleife ist ja das ich nicth weiß wie ich dafür sorgen kann das ich den ersten Datensatz in eine VAriabe bekomme und den Zweiten in eine Zweite Varible.
Beitrag zuletzt geändert: 23.7.2011 1:20:26 von xxbashxx -
xxbashxx schrieb:
auf dein pm hier ein beispiel, wie das gehen kann:
... einer stelle auf einen bestimmten Wert zugreifen uns zwar einmal auf den Ersten und einmal auf den Zweiten ...
das ergebnis wird in der foreach schleife in ein array ($arset) und in einen (preformatierten) text ($rset) 'gesammelt' und am ende ausgegeben. im array kannst dann genau sehen, wo deine daten sind und wie die sie dann ansprechen kannst.<?php $hos = "localhost"; #$db = 'information_schema'; // ich selectiere normal datenbank $user = "..."; $pw = "..."; $conn = ($c = mysql_connect($host,$user,$pw)) ? $c: exit('<pre>'.print_r(array(mysql_errno(), mysql_error()), true)); $query = <<< EOT SELECT * FROM information_schema.SCHEMATA EOT; $res = ($r = mysql_query($query)) ? $r: exit('<pre>'.print_r(array(mysql_errno(), mysql_error()), true)); $rset = ''; $arset = null; $i = 0; while($row = mysql_fetch_assoc($res)) { foreach($row as $k => $v) { $rset .= "<strong>$k</strong> - $v\n"; $arset[$i][$k] = $v; } $rset .= "\n"; $arset[++$i] = '----'; $i++; } exit('<pre>' . print_r($arset, true) . '<hr />' . $rset . '</pre>');
obwohl dich hauptsächlich die array-variante interessiert, muss ich hier sagen, es besteht oft die möglichkeit queries so zu gestalten, dass man die ergebnisse so gut wie nicht behandeln muss. (damit hat man dann auch eine sinnvolle anwendung für das ding.) hier hast in der function 'CSelect::create_select()' ein html-select. mit dem kannst aus allen deinen mysql datenbanken eine auswählen. der ganze effektive code dazu hat gerade noch 12 zeilen, wovon eigentlich die query allein aus 8 besteht (na ja! macht ja auch die ganze arbeit [formatirt sogar den html-quelltext richtig]. so bleiben nur 4 zeilen php :o).<?php // CSelect test $s = new CSelect(); $select = $s->select; $html = <<< EOT <!DOCTYPE html> <html> <head> <title>CSelect - Test [MySQL]</title> </head> <body> <p> $select </p> </body> </html> EOT; exit(''.$html); class CUser { public $user = '...'; public $passwd = '...'; } class CDb extends CUser { public $host = 'localhost'; public $error = null; private $conn = null; public $res = null; public function __construct() { $this->conn = ($c = mysql_connect($this->host, $this->user, $this->passwd)) ? $c: $this->error(); } public function __destruct() { $this->conn = (is_resource($this->conn)) ? mysql_close($this->conn): $this->error(); $this->conn = null; } public function query($query) { $this->res = ($r = mysql_query($query)) ? $r: $this->error(); } public function error() { $this->error = array(mysql_errno(), mysql_error()); } } class CSelect extends CDb { public $select = null; public function __construct() { parent::__construct(); $this->create_select(); } public function create_select() { $query = <<< EOT SELECT ' <select id="db_select">\n' UNION SELECT CONCAT(' <option>', SCHEMA_NAME, '</option>\n') db FROM information_schema.SCHEMATA UNION SELECT ' </select>\n' EOT; $this->query($query); while($row = mysql_fetch_assoc($this->res)) { foreach($row as $k => $v) { $this->select .= $v; } } } public function __toString() { return '<pre>' . print_r($this, true) . '</pre>'; } }
viel spass
lg
Beitrag zuletzt geändert: 23.7.2011 8:52:41 von hemiolos -
xxbashxx schrieb:
Vielen Dank für die Antworten
EDIT
So das hätte ich jetzt raus aber nun möchte ich an einer stelle auf einen bestimmten Wert zugreifen uns zwar einmal auf den Ersten und einmal auf den Zweiten. So das Problem bei der Whileschleife ist ja das ich nicth weiß wie ich dafür sorgen kann das ich den ersten Datensatz in eine VAriabe bekomme und den Zweiten in eine Zweite Varible.
Da die Werte ja in irgendeiner Weise identisch sind, würde ich mit LEFT JOIN arbeiten. So hast du nur einen Query, wofür du vorher zwei brauchtest. -
xxbashxx schrieb:
<wer ist namlos?>
Vielen Dank für deine ausführliche Antwort namlos
Und ja wir reden immer noch von der Query.
er spricht aber von 2!
fabo schrieb:
"Da die Werte ja in irgendeiner Weise identisch sind" - na klar. es ist nirgends verboten, dass ich in eine db->tabelle->spalte/ dreiquadrilliardenmal (3*10^24) die ganze biebel als blob hineinknalle. und das ist - herrschaften - 'jede menge gleiche' daten! (probierts zu hause nicht, euer speicher geht über ;o)
... Da die Werte ja in irgendeiner Weise identisch sind, würde ich mit LEFT JOIN arbeiten. So hast du nur einen Query, wofür du vorher zwei brauchtest.
dann möchten wir @fabo herzlichst bitten, auf die query
seine version zu veröffentlichen. (bin gespannt, was LEFT JOIN bringt.)SELECT stunde FROM `Lehrer`
lg -
Vergiss einfach, was ich schrieb. Ich hab das Ganze mit einem zuvor erstellten Thema verwechselt ;)
-
fabo schrieb:
na dann könne wir alle zufrieden sein (hätte mich ja gewundert ;o) und schluss und tschüss und ...
Vergiss einfach, was ich schrieb. Ich hab das Ganze mit einem zuvor erstellten Thema verwechselt ;)
lg -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage