Autor | Zpráva | ||
---|---|---|---|
tomnejeschleba Profil * |
#1 · Zasláno: 26. 4. 2011, 09:51:01
Zdravím, mám problém s připojením databáze a nevím si moc rady. Je to projekt do školy, vše mám vytvořené, ale pořád mi to hází chybu na řádku 17: mysql_fetch_array(): supplied argument is not a valid MySQL ...
Můžete se mi na to prosím mrknout ? :) <?php $url = "data.xml"; $hlavicka = "<?xml version='1.0' encoding='windows-1250'?><jarmarky>"; $paticka = "</jarmarky>"; $fp = fopen($url , "w"); fwrite($fp, $hlavicka); fclose($fp); $spojeni=MySQL_Connect("localhost", "jmeno", "heslo") or die("Nepodařilo se připojit k databázi"); $databaze=MySQL_Select_DB("jmeno", $spojeni); $vysledek=MySQL_Query("SELECT*FROM jarmarky"); $fp = fopen($url , "a"); mysql_set_charset("cp1250"); while($zaznam=mysql_fetch_array($vysledek)): $vypis = " <data id=\"$zaznam\"> <jmeno>$zaznam[jmeno]</jmeno> <prijmeni>$zaznam[prijmeni]</prijmeni> <firma>$zaznam[firma]</firma> <telefon>$zaznam[telefon]</telefon> <email>$zaznam[email]</email> <obor>$zaznam[obor]</obor> <adresa>$zaznam[adresa]</adresa> <specifikace>$zaznam[specifikace]</specifikace> <elektrika>$zaznam[elektrika]</elektrika> <ucast>$zaznam[ucast]</ucast> <poznamka>$zaznam[poznamka]</poznamka> </data> "; fwrite($fp, $vypis); endwhile; fwrite($fp, $paticka); fclose($fp); MySQL_Close(); Jinak když jsem smazal řádek "while($zaznam=mysql_fetch_array($vysledek)):" a na konci "endwhile;", tak mi to dejme tomu funguje, v xml souboru se zobrazí struktura, ale nenačte data z databáze. Díky moc za info :) |
||
Anonymní Profil * |
#2 · Zasláno: 26. 4. 2011, 10:11:26
Pokud se nepletu tak musíš upravit vypis z
<jmeno>$zaznam[jmeno]</jmeno> na <jmeno>{$zaznam['jmeno']}</jmeno> Možná bych to udělal takhle: $vypis = "<data id=\"$zaznam\">"; $vypis .= "<jmeno>" . $zaznam['jmeno'] . "</jmeno>"; $vypis .= "</data>"; |
||
Tori Profil |
#3 · Zasláno: 26. 4. 2011, 10:13:46 · Upravil/a: Tori
tomnejeschleba:
Když změníte takto řádek 13, vypíše vám to nějakou chybu? $vysledek=MySQL_Query("SELECT * FROM jarmarky") or echo 'Chyba dotazu: '.mysql_error(); edit: Anonymní: To je možné, ale ne nezbytné - v kontextu řetězce může použít i "text $pole[klíč] další text". Chyba je v tom, že dotaz nevrací to co se očekává. |
||
tomnejeschleba Profil * |
#4 · Zasláno: 26. 4. 2011, 10:22:15
Tím by to nemělo být, ve škole podle skript máme používat výpis tak, jak jsem psal já.
Kamarád to má následovně (a funguje mu to korektně): $fp = fopen($url , "w"); fwrite($fp, $zahlavi); fclose($fp); include('otevriDB.inc'); @mysql_query("SET NAMES cp1250"); $vysledek=mysql_query("SELECT*FROM Mesta"); $fp=fopen($url, "a"); while($zaznam=mysql_fetch_array($vysledek)): a zbytek stejně (resp. podobně vzhledem k jiným parametrům u jeho projektu). Já bohužel nepoužívám include('otevriDB.inc'). |
||
Mastodont Profil |
#5 · Zasláno: 26. 4. 2011, 10:25:10
Ne "SELECT*FROM Mesta", ale "SELECT * FROM Mesta"
|
||
tomnejeschleba Profil * |
#6 · Zasláno: 26. 4. 2011, 10:25:45
Tori:
> Když změníte takto řádek 13, vypíše vám to nějakou chybu? > > 1 > > $vysledek=MySQL_Query("SELECT * FROM jarmarky") or echo 'Chyba dotazu: '.mysql_error(); > > Btw na řádku 19 by se do toho atributu id mělo vkládat něco jako $zaznam[id] - takhle by tam bylo jen "Array". Pokud poupravím řádek podle Vás, tak výsledek databáze hází chybu: Parse error: syntax error, unexpected T_ECHO in /var/www-stud/e090189/export.php on line 13 Jinak jak jste psal, že bych měl vkládat něco jako $zaznam=[id], tak to jsem původně měl v kódu, ale skončil jsem pokaždé ve stejné fázi - chybu u mysql_fetch_array, co jsem koukal ke kolegovi, tak ten to má tak, jak to mám já teď (bez ID). |
||
Tori Profil |
#7 · Zasláno: 26. 4. 2011, 11:35:07
tomnejeschleba:
Aha, tak potom to echo dejte na další řádek za dotazem. Totiž ta chybová hláška ("Supplied argument is not valid MySQL resource") znamená, že mysql_query vrátila false, takže chyba je asi v dotazu (myslím, že špatně zadané jméno databáze by vyhodilo chybu už na předchozím řádku). K tomu $zaznam[id]: mysql_fetch_array vrací pole - jak název naznačuje, které se při pokusu o zápis do řetězce zapíše jako "Array". Nevím, jak to kolegovi funguje, nemělo by. |
||
tomnejeschleba Profil * |
#8 · Zasláno: 28. 4. 2011, 19:11:35
Tak jsem svůj problém nakonec vyřešil a bylo to samozřejmě mou vlastní blbostí.
Co byl problém - připojení k db, v jiném php jsem měl nastavený parametr na $result a v tomto php souboru jsem odkazoval (úplně blbě samozřejmě) na $vysledek. Díky moc za ochotu a spolupráci, alespoň jsem se trochu do toho php dostal dál, když jsem to řešil :) Jestli je to možné, tak LOCK, díky :) |
||
Časová prodleva: 13 let
|
0