Autor Zpráva
george
Profil *
Mám následující zvláštní problém. Půl roku mi naprosto bez problémů fungoval skript pro výpis dat uložených v databázi. Web je na serveru webzdarma, uváděná verze PHP 4.3.4, Apache 2.0.59 a MySQL 5.0.22. Používal jsem následující kód:


<?
include ("globals.php");
mysql_connect($nazev_hostitele, $jmeno_uzivatele, $heslo);
mysql_select_db($nazev_databaze);
$result_vys = mysql_query("SELECT datum, home, out, win, lost, class, typ FROM $tab_vysledky ORDER BY datum DESC, class ASC LIMIT 6");
if (!$result_vys) {
echo "<tr><td>Došlo k chybì při zpracování dotazu v databázi!</td></tr>";
}
while ($vypis_vys = mysql_fetch_array($result_vys)) {
echo "<tr><td>".$vypis_vys["datum"]."</td>";
echo "<td>".$vypis_vys["home"]."&nbsp;:&nbsp;".$vypis_vys["out"]."</td>";
echo "<td>".$vypis_vys["typ"]."</td>";
echo "<td>".$vypis_vys["class"]."</td>";
echo "<td>".$vypis_vys["win"].":".$vypis_vys["lost"]."</td></tr>";
}
echo "</table><br>";
?>


Skript vypisuje výsledky zápasů z jedné nohejbalové soutěže, toale není podstatné. Problém je v tom, že najednou při spuštění tohoto kódu hlásí PHP chybu:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource...

to stejné i pro funkci mysql_num_rows()...

Nevíte, kde by mohl být problém? Díky za rady...
Kajman_
Profil *
Zkuste sloupečky datum, home, out, win, lost, class, typ obalit zpětnými apostrofy ` - asi při přechodu na novou verzi mysql přibyla nějaká klíčová slova (asi out).
Joker
Profil
Kajman_
Mě by zajímalo: proč to nespadne už na řádku
if (!$result_vys) {
nevíte?
george
Profil *
Po této úpravě

mysql_query("SELECT `datum`, `home`, `out`, `win`, `lost`, `class`, `typ` FROM $tab_vysledky ORDER BY datum DESC, class ASC LIMIT 6");

se data opravdu zobrazila, ale je ignorováno formátování textu, údaje jsou vypsány v řádku za sebou... Co je ale nejvíc zvláštní, některé výpisy z databáze fungují normálně i bez zpětných apostrofů (jako dřív) a některé ne...
Kajman_
Profil *
No, kdyby tam nebylo to out, tak to bude fungovat... ale lepší je dát taková nebezpečná slova rovnou všechny do `, protože za rok přibyde do klíčových slov třeba class a budete hledat problém znovu.

No a pokud chcete používat tr, tak prvně použijte table.
Kajman_
Profil *
Mě by zajímalo: proč to nespadne už na řádku
if (!$result_vys)


Asi tam je nenulová hodnota, třeba nějaká záporná, nevím.
george
Profil *
Tak to formátování byla samozřejmě moje chyba v HTML kódu... Při tom horlivém "opravování" skriptu jsem zapoměl na začátek tabulky :-) Děkuju za radu. Také by mě zajímalo, jaktože PHP se nezastaví už na řádku, který vyhodnocuje, zda SQL dotaz proběhl v pořádku?
george
Profil *
Kajman_
Tak jste mě předběhl, odpověď jste poslal, zrovna když jsem já psal... Je škoda, že v některých výukových textech se liší informace, nikde jsem totiž zatím nenarazil na informaci, že se mají názvy sloupců obalovat zpětnými uvozovkami kvůli podobným problémům...
Toto téma je uzamčeno. Odpověď nelze zaslat.