Autor Zpráva
merlinok
Profil
Dobrý den,
včera jsem jen tak něco zkoušel a pořád nemůžu přijít na to kde je chyba....

píše mi to tohle....

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\xxx\test.php on line 33

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'character WHERE name=mordor' at line 1


můj kód:
$name = $login;
    $info = "SELECT * FROM character WHERE name=$name";
    $cid = mysql_connect("localhost","root","xxxx") or die(mysql_error());
    mysql_select_db("test") or die(mysql_error());
    $retid = mysql_query($info);
    $row = mysql_fetch_array($retid);
    echo $row['job'];
    echo MySQL_Error();


a $login = mordor
Marek_k
Profil *
echo $row[0]['job']; ???
merlinok
Profil
Tak jsem to zkusil, ale nejde to... asi bude chyba někde jinde :(
Marek_k
Profil *
chyba ve spojení, co je řádek 33?

Zkus dát to name do apostrofů `name`
Joker
Profil
Chybí tam uvozovky.
Dále "character" je rezervované slovo, takže by za prvé mělo být ve zpětných apostrofech a za druhé bylo lepší se mu vyhnout při pojmenovávání tabulek

$info = 'SELECT * FROM `character` WHERE name="'.$name.'"';
Marek_k
Profil *
Zkus
 $info = " SELECT * FROM `character` WHERE `name`=".$name." ";
merlinok
Profil
Tak jsem to zkusil, a teď mi to píše další chybu.

Unknown column 'mordor' in 'where clause'

řádek 33 je $row = mysql_fetch_array($retid);

PS: Nikdy sem neviděl stránku kde by odepsali na můj dotaz do 10 minut ...
Joker
Profil
Mimochodem, to je názorná ukázka toho, jaké výhody přináší u databáze s anglickými rezervovanými slovy pojmenovávat sloupce a tabulky česky.
Marek_k
Profil *
patrně máš register_globals na ON, bejt tebou tak proměnnou $name nepoužiju, nechám ten $login a jak říká Joker, plně bych přejmenoval sloupec character.
merlinok
Profil
tak už jsem to přejmenoval a ty register_globals... někde jsem to už viděl ale nevim jak to vypnout (jestliže je to zapnutý)
Marek_k
Profil *
To je nastavení serveru, který ty asi moc neovlivníš. Funguje to?
merlinok
Profil
tak jsem zjistil že mám register_globals zapnutý... ale jinak to nefunguje... a kdybyste poradily jak je vypnout budu rád...
Marek_k
Profil *
napiš sem, jak jsi přesně napsal ten příkaz $info = ...
Marek_k
Profil *
V tomhle případě asi na vině register_globals nebudou, asi jsi nedal všechny zpětný apostrofy, ale obecně se doporučuje mít register_globals vypnutý. Musíš zažádat správce serveru.
merlinok
Profil
" SELECT * FROM `charakter` WHERE `name`=".$login." ";
merlinok
Profil
já bych správce serveru požádal... ale já to prostě nevim... PS: já jsem správce :(
Marek_k
Profil *
Napiš to opačně, jak psal Joker
' SELECT * FROM `charakter` WHERE `name`='.$login.'';


Kdyby to nepomohlo, hol sem musíš dát celej script
merlinok
Profil
můj celej skript je tohle:

 
    $info = ' SELECT * FROM `charakter` WHERE `name`='.$login.'';
    $cid = mysql_connect("localhost","root","petrpetr") or die(mysql_error());
    mysql_select_db("testgame") or die(mysql_error());
    $retid = mysql_query($info);
    $row = mysql_fetch_array($retid);
    echo MySQL_Error(); 


a chybová hláška se vůbec nezměnila... ani potom co jsem změnil to $info
Alphard
Profil
u Jokera jste asi nepostřehli apostrofy kolem hodnoty za where
napiš to takhle:
$info = "SELECT * FROM `character` WHERE name='".$name."'";
Marek_k
Profil *
Předtím $infem máš co nahoře?

Hlášku to píše pořád tuhle? Unknown column 'mordor' in 'where clause'
Marek_k
Profil *
u Jokera jste asi nepostřehli apostrofy kolem hodnoty za where
napiš to takhle:

$info = "SELECT * FROM `character` WHERE name='".$name."'";


Pravda
merlinok
Profil
před tím infem mám už jen samý HTML a
	$cfgProgDir = 'phpSecurePages/';
	include($cfgProgDir . "secure.php");
pro "držení" uživatele na stránce
merlinok
Profil
Tak mockrát vám děkuji, moc moc, už to funguje... njn apostrofy :D
Toto téma je uzamčeno. Odpověď nelze zaslat.