| 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: 15 let
|
|||
0