Autor | Zpráva | ||
---|---|---|---|
MilanJ Profil |
#1 · Zasláno: 14. 2. 2006, 15:47:33
Používám PHP a databázi MySQL.
Potřebuji aktualizovat databázi (viz. níže), ale nefunguje mi to tak jak má. Proměnná $random_no obsahuje řetězec s heslem. Databázi mám správně otevřenou, s jinými dotazy problém nemám. Je chyba v syntaxi? UPDATE admin SET heslo = PASSWORD('$random_no') WHERE jmeno = 'admin'"; |
||
jozob Profil |
#2 · Zasláno: 14. 2. 2006, 15:50:58 · Upravil/a: jozob
MilanJ
1.) názvy polí zapisuj do apostrofov, teda neviem, či je to správny výraz, ale ide o znak ` 2.) po dotaze (funkcii mysql_query) skús vypísať návratovú hodnotu funkcie mysql_error() - echo mysql_error(); 3.) skús dotaz položiť v PMA |
||
roberta Profil |
#3 · Zasláno: 14. 2. 2006, 15:52:53
heslo = PASSWORD('$random_no')
a to PASSWORD čo má robiť? vyzerá to ako keby to bola mysql funkcia... skús dať iba heslo = '$random_no' |
||
T3RMiX Profil |
#4 · Zasláno: 14. 2. 2006, 15:54:00 · Upravil/a: T3RMiX
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
viz. http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html |
||
jozob Profil |
#5 · Zasláno: 14. 2. 2006, 15:54:25
roberta
"a to PASSWORD čo má robiť?" Je to kryptovacia funkcia. Zakryptuje reťazec podľa určitého algoritmu. |
||
jozob Profil |
#6 · Zasláno: 14. 2. 2006, 15:55:06
T3RMiX
PASSWORD je MySQL funkcia. |
||
MilanJ Profil |
#7 · Zasláno: 14. 2. 2006, 15:55:17
PASSWORD('$random_no') je f-ce MySQL - zahesluje řetězec do 16ti znakovýho řetězce.
Obsah nelze "vytáhnout", jde pouze porovnat s řetězecem stejné konstrukce, tj. PASSWORD('řetězec) |
||
T3RMiX Profil |
#8 · Zasláno: 14. 2. 2006, 15:56:05
jozob
jj diky, pak jsem si to uvedomil a opravil |
||
Kajman_ Profil * |
#9 · Zasláno: 14. 2. 2006, 16:13:24
MilanJ
A co si v tom php testovat návratovou hodnotu mysql_query() a případně si vypsat mysql_error()? Pokud je chyba v syntaxi, tak to upozorní a dokonce popíše kde. Pokud je návratová hodnota korektní, tak asi tam nebude řádek odpovídající podmínce. |
||
jozob Profil |
#10 · Zasláno: 14. 2. 2006, 16:18:49
T3RMiX
OT: Ak budeš nabudúce úplne meniť text príspevku, radšej to upravuj tak, aby tam zostal aj pôvodný text, ten označ ako pôvodný a potom uveď nový, ten označ tiež. Keď ho úplne vymeníš, príspevky pod nim môžu stratiť opodstatnenie. Ale to len do budúcna. |
||
MilanJ Profil |
#11 · Zasláno: 14. 2. 2006, 17:00:59
mysql_error() mi vypsalo: Unknown column 'admin' in 'where clause'
Mám správně otevřenou databázi, odkazuji se na tabulku ADMIN, která obsahuje 3 údaje: jmeno, heslo, email. Vyhodnocení dotazu vypadá následovně: $query = "UPDATE admin SET heslo = PASSWORD('$random_no') WHERE jmeno = $admin_jmeno"; if (mysql_query($query)) { if (Mail($emailova_adresa,"zaslání hesla", "Vaše nové heslo je xyz")) { echo 'Vaše heslo bylo úspěšně odesláno'; } else { echo 'Heslo se nepodařilo úspěšně odeslat!'; } } else { echo 'Došlo chybě k zápisu do databáze!'; } ...kde PASSWORD('$random_no') je ukládané heslo ...a $admin_jmeno jejméno, které zadal uživatel do formuláře |
||
Hugo Profil |
#12 · Zasláno: 14. 2. 2006, 17:12:04
MilanJ
Musíš ten string v podmínce uzavřít do apostrofů, protože jinak mysql hledá odpovídající sloupec. $query = "UPDATE admin SET heslo = PASSWORD('$random_no') WHERE jmeno = '$admin_jmeno'"; |
||
MilanJ Profil |
#13 · Zasláno: 14. 2. 2006, 17:13:50 · Upravil/a: MilanJ
Tak už to mám, chyba byla ve tvaru SQL dotazu.
Když použiju tenhle tvar, není problém: $query = "UPDATE `admin` SET `heslo` = PASSWORD('$random_no') WHERE `jmeno` = '$admin_jmeno' ; Proč? Vyžaduje snad PHP při tvorbě SQL dotazů UPDATE `admin` místo UPDATE admin ? |
||
jozob Profil |
#14 · Zasláno: 14. 2. 2006, 17:15:52
MilanJ
To bude na strane MySQL serveru, slovo admin bude asi kľúčové. |
||
MilanJ Profil |
#15 · Zasláno: 14. 2. 2006, 17:16:32
admin bude asi kľúčové
Že by taková haluz??? |
||
MilanJ Profil |
#16 · Zasláno: 14. 2. 2006, 17:22:55
Ne ne, chyba je v těch apostrofech. No jo, já měl pocit, že už jsem to zkoušel, ale nešlo mi to. Chybama se člověk učí.
Všem zúčastněným díky za pomoc.;-) |
||
jozob Profil |
#17 · Zasláno: 14. 2. 2006, 17:28:04
MilanJ
"Ne ne, chyba je v těch apostrofech." Práve preto, že admin je asi kľúčové slovo je ho treba zadávať do úvodzoviek, ak chceme pracovať s poľom, ktoré má názov admin. Pokiaľ má pole názov, ktorý nespadá do kľúčových, kľudne ho možeš zadať bez apostrofov, ale ak je kľúčové, bez apostrofov sa neobídeš. Inak moja hneď prvá odpoveď na príspevok o tom hovorila :-) 1.) názvy polí zapisuj do apostrofov, teda neviem, či je to správny výraz, ale ide o znak ` |
||
Hugo Profil |
#18 · Zasláno: 14. 2. 2006, 17:33:51
jozob
Tady to bylo spíš tím, že měl dotaz ve formě ... where jmeno = admin; takže hledal řádky, které mají stejnou hodnotu ve sloupci jmeno a admin, správný tvar je ... where jmeno = 'admin'; |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0