MySQL Fehler

MySQL Fehler| Datum: 30.04.2010 - 15:04 | Author: SirZimt

Also ich hatte gestern vor meine config.php an die Datenbank anzubinden... klappt prima!
So um die Daten auszulesen hab ich mir nen Array gebastelt.

Bisher sieht das teil nun so aus:

Code


<?php
$datenbank = mysql_connect("localhost","choast","******")
or die("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
mysql_select_db("darkchaos")
or die ("Die Datenbank existiert nicht.");

$config = array();
$sql = "SELECT option, wert FROM config";
$res = mysql_query($sql);
while($obj = mysql_fetch_assoc($res)) //Result vom query
{
$config[$obj->option] = $obj->wert;
}

$name = print($config['title']);
$template = print($config['theme']);

$jq = $config['jquery'];
$jqu = $config['jqueryui'];
$sb = $config['shadowbox'];
?>




Wenn man die Seite aber aufruft kommt das dabei raus:

Zitat von 94bw9dl7
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /srv/www/vhosts/darkchaos.ath.cx/httpdocs/v4/config.php on line 10

Notice: Undefined index: title in /srv/www/vhosts/darkchaos.ath.cx/httpdocs/v4/config.php on line 15

Notice: Undefined index: theme in /srv/www/vhosts/darkchaos.ath.cx/httpdocs/v4/config.php on line 16

Notice: Undefined index: jquery in /srv/www/vhosts/darkchaos.ath.cx/httpdocs/v4/config.php on line 18

Notice: Undefined index: jqueryui in /srv/www/vhosts/darkchaos.ath.cx/httpdocs/v4/config.php on line 19

Notice: Undefined index: shadowbox in /srv/www/vhosts/darkchaos.ath.cx/httpdocs/v4/config.php on line 20

Warning: require(themes/1/head.tpl): failed to open stream: No such file or directory in /srv/www/vhosts/darkchaos.ath.cx/httpdocs/v4/index.php on line 4

Fatal error: require(): Failed opening required 'themes/1/head.tpl' (include_path='.:/usr/share/php5:/usr/share/php5/PEAR') in /srv/www/vhosts/darkchaos.ath.cx/httpdocs/v4/index.php on line 4



Ich werd einfach nicht mehr schlau aus den Meldungen... die "Undefined index" denke ich kommen daher weil oben die Aktion schon abgebrochen wird...

Hoffe jemand findet den Fehler <.< komme einfach nicht dahinter...

PS: 100pro wieder sau einfacher fehler... nur ich find ihn nich <.<...

Re: MySQL Fehler| Datum: 30.04.2010 - 21:04 | Author: Haruspex

Ich mutmaße mal, wenn der erste Fehler verschwindet verschwinden vermutlich auch die anderen.
Der erste Fehler besagt, dass der ausgeführte Query ungültig ist, nix zurückliefert...
Kontrollier doch mal deinen query

Code



$sql = "SELECT option, wert FROM config";


ggf. "or die(mysql_error());" einsetzen. Oder den Query einfach mal im phpmyadmin ausführen...

Re: MySQL Fehler| Datum: 30.04.2010 - 21:04 | Author: Anonymous

womöglich handelt es sich entweder bei "option" oder "config" um ein mysql reserviertes wort. Es wäre angebracht deinen Tabellen immer einen Prefix zu geben, so wie man es z.b. von phpbb her kennt. Auf diese Art sind die Tabellen eindeutig einem Projekt zugeordnet, und man verhindert damit dass die Tabellennamen reserviert sind.

Übrigens sehe ich du bist von mysql_fetch_object() auf mysql_fetch_assoc() umgestiegen.
Aber hast dir nicht angeschaut, was der relevante unterschied zwischen den beiden Funktionen ist.
mysql_fetch_object() liefert jeden Datensatz als ein Objekt zurück, und man greift auf die einzelnen Felder mit dem "->" Pfeil zu, wie es bei objekten üblich ist.
Jetzt allerdings nutzt du mysql_fetch_assoc() was kein objekt mehr zurück gibt, sondern ein assoziatives Array.
Es müsste in der Schleife also so korrekt ausschauen:

Code


while($row = mysql_fetch_assoc($res)) //Result vom query
{
$config[$row['option']] = $row['wert'];
}



ich hab den variabelnamen von $obj in $row umgeändert, da es jetzt ja kein objekt mehr ist, und die Namensgebung sonst nur verwirren würde.

Re: MySQL Fehler| Datum: 30.04.2010 - 21:04 | Author: SirZimt

Nach einigen wirklich verbalen Anpassungen...
die Haruspex ja gesagt hatte sieht es nun so aus:

Code


$config = array();
$sql = "SELECT * FROM config";
$res = mysql_query($sql) or die(mysql_error());
while($obj = mysql_fetch_object($res))
{
$config[$obj->option] = $obj->wert;
}




wieder mit object da mir da die ausgabe besser gefällt ;)

Re: MySQL Fehler| Datum: 30.04.2010 - 21:04 | Author: Anonymous

[quote="SirZimt":inmcp29k]wieder mit object da mir da die ausgabe besser gefällt ;)[/quote:inmcp29k]
Die Ausgabe ist bei beiden Varianten absolut identisch, nur der code schaut etwas anders aus.
Objekte reservieren in der Regel mehr Speicher, und "fressen" somit mehr Ressourcen, als ein simples assoziatives Array. Die Verwendung von mysql_fetch_assoc() ist somit meiner Meinung nach dringend zu empfehlen :)

Re: MySQL Fehler| Datum: 30.04.2010 - 22:04 | Author: Anonymous

Ansonsten kannst du es auch so schreiben:

Code


$sql = "SELECT option, wert FROM `config`";



Re: MySQL Fehler| Datum: 01.05.2010 - 00:05 | Author: Haruspex

[quote="SirZimt":2mrcvjnw]Nach einigen wirklich verbalen Anpassungen...
[/quote:2mrcvjnw]
Und? Ergebnis? :)

Re: MySQL Fehler| Datum: 01.05.2010 - 04:05 | Author: Anonymous

[quote="DHMH":2kl0fnxr]Ansonsten kannst du es auch so schreiben:

Code


$sql = "SELECT option, wert FROM `config`";


[/quote:2kl0fnxr]
Was man aber lassen sollte, da das nutzen der Gravis ` eine riene MySQL sache ist, und nicht zur Standard Query Language (SQL) gehört.
Eine Vernünftige Namensgebung mit Präfixen für Tabellen und Felder ist auch im nachhinein, wenn man komplexere Abfragen mit JOIN etc. gestaltet, durchaus von Vorteil.

Re: MySQL Fehler| Datum: 01.05.2010 - 14:05 | Author: SirZimt

@Haru: Mit erfolg nun gehts...
@Balmung: Die Tabellen werd ich noch umbenenne :P