Autor | Zpráva | ||
---|---|---|---|
Senky Profil |
#1 · Zasláno: 22. 6. 2009, 11:18:23
Zdravím.
Mám menší problém s ošetrením textu, pretože 3 funkcie mi ničili text, a ďalšie už nepoznám, tak by som sa chcel poradiť. Skúšal som pred zápisom do databázy tieto funkcie: stripslashes mysql_real_escape_string htmlentities Avšak každá urobila s textom niečo nežiadané, napríklad skazila diakritiku alebo odobrala časti textu. Pozná niekto aj nejaké iné funkcie na ošetrenie textu pred vstupom do databázy, ktorá ale nechá text textom? Ďakujem... |
||
Nox Profil |
#2 · Zasláno: 22. 6. 2009, 11:28:47
mysql_real_escape_string ... jsem si celkem jistý, že ty chyby jsou způsobené něčím jiným
|
||
Senky Profil |
#3 · Zasláno: 22. 6. 2009, 11:41:23
Neviem prečo, ale keď použijem iba funkciu mysql_real_escape_string, neuloží mi to vôbec do databázy...
|
||
Joker Profil |
#4 · Zasláno: 22. 6. 2009, 11:42:34
Senky
Jak vypadá výsledný (už zpracovaný-připravený) SQL dotaz, který se posílá do databáze? |
||
Senky Profil |
#5 · Zasláno: 22. 6. 2009, 11:51:11
mysql_query("INSERT INTO notes VALUES ('','".$user."','".$note1."','".$note2."','".$note3."','".$note4."',".time().")") or die(mysql_error()); No a celé to vyzerá takto: // pripojenie k databáze $user = mysql_real_escape_string($user); $note1= mysql_real_escape_string($note1); $note2= mysql_real_escape_string($note2); $note3= mysql_real_escape_string($note3); $note4= mysql_real_escape_string($note4); mysql_query("INSERT INTO notes VALUES ('','".$user."','".$note1."','".$note2."','".$note3."','".$note4."',".time().")") or die(mysql_error()); |
||
Joker Profil |
#6 · Zasláno: 22. 6. 2009, 12:01:57
Senky
No a jak vypadá už sestavený dotaz? Udělejte to takhle: $sql = "INSERT INTO notes VALUES ('','".$user."','".$note1."','".$note2."','".$note3."','".$note4."',".time().")"; mysql_query($sql) or die(mysql_error()); ...a nechte si vypsat $sql Jinak obecně se mi osvědčilo si SQL dotaz sestavit do nějaké meziproměnné... právě proto, že v případě chyby si jde nechat dotaz vypsat. |
||
Joker Profil |
#7 · Zasláno: 22. 6. 2009, 12:03:58
Poznámka: Hodnota time() nejspíš nemá být v uvozovkách.
|
||
Senky Profil |
#8 · Zasláno: 22. 6. 2009, 12:08:48 · Upravil/a: Senky
Nie, v tom chyba nie je. Ak to zamením za
sql = "INSERT INTO notes VALUES ('','".$user."','".$note1."','".$note2."','".$note3."','".$note4."','time()')"; tak je to o tom istom A ak tam úvodzovky nedám: 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 '))' at line 1 |
||
Nox Profil |
#9 · Zasláno: 22. 6. 2009, 12:29:11
Joker
Nezáleží to na tom, jestli je to php nebo mysql funkce? doposud tam měl php a v tom případě to měl dobře Senky Máš tam apostrofy kolem timu místo uvozovek...a pokud to má být MySQL funkce time, tak asi naopak tam neměj ani jedno Nepouštěj ten dotaz, ale napiš nám, co se uloží do té proměnné sql,... echo $sql.. |
||
TomášK Profil |
#10 · Zasláno: 22. 6. 2009, 12:43:52
Joker psal, že hodnota funkce má být v uvozovkách, nikoliv samotná funkce - myslel to imho takto:
sql = "INSERT INTO notes VALUES ('','".$user."','".$note1."','".$note2."','".$note3."','".$note4."','".time()."')"; přes mysql funkci by to mohlo jít sql = "INSERT INTO notes VALUES ('','".$user."','".$note1."','".$note2."','".$note3."','".$note4."', NOW())"; nebo možná ještě lépe nadefinovat pro ten sloupec DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP a pak ho vynechat při vkládání, aby se vyplnil automaticky. |
||
Senky Profil |
#11 · Zasláno: 22. 6. 2009, 12:45:23
No jasné, už to mám. Ďakujem Nox. Problém bol v tom, že som najprv vykonal mysql_real_escape_string a až potom sa pripojil k databáze. Ďakujem ešte raz...
|
||
Nox Profil |
#12 · Zasláno: 22. 6. 2009, 14:08:03
TomášK
psal "hodnota time() nejspíš nemá", tak bych řekl že nemá :) (a ať tím myslel apostrof nebo uvozovky tak nevim proč to řekl když Senky to tak beztak neměl :) ) především MySQL konvertuje bez problémů řetězce na čísla (select '5'+'3'), takže nezáleží na tom moc...leda pokud je třeba uživatelský vstup, tak pokud tam bude zadán řetězec, tak dotaz skončí chybou (bez apost.) a ne jen warningem, což pak už asi záleží na kontextu co je lepší, ale možná že i to první...takže imho pro čísla bez a pro řetězce s Senky No, nakonec si to vyřešil sám ;) |
||
Časová prodleva: 15 let
|
0