Autor | Zpráva | ||
---|---|---|---|
escape_string Profil * |
#1 · Zasláno: 10. 3. 2008, 07:54:05
Ahoj,
používám znakovou sadu utf-8, jedu na php i mysql řady 5. Vše funguje super, akorát mi nefunguje funkce mysql_real_escape_string, resp. mysql_escape_string, zkoušel jsem to s obouma. U sebe na localhsotu je vše o.k. Scripty nahraju na server (jedu přes cesky-hosting) a neescapuje, kde je problém? Zde jsou funkce, který mi jak jsem už říkal na localhostu fungují: function sql_string($txt) { return "'". $this->mysqli->real_escape_string($txt) ."'"; } function sql_integer($int) { return (integer) (trim($int) + 0); } Ukládám do databáze např. takto: $sql = "INSERT INTO tabulka (něcovtextu, něcovčísle) VALUES (".$db->sql_integer($číslo).", ".$db->sql_string($text).")"; $db->funkceprovložení($sql, __FILE__, __LINE__); Nemáte s tím někdo zkušenosti, proč na localhostu ANO a na serveru NE? |
||
loyza Profil |
#2 · Zasláno: 10. 3. 2008, 08:56:14
ůbec nevím, jen tak plácám, ale nemůže to být třeba tím, že na serveru vůbec mysqli není? Jinak nevím, koukal sem do manuálu, což předpokládám, že ty taky ;) ale nic tam k tomu není.
|
||
escape_string Profil * |
#3 · Zasláno: 10. 3. 2008, 15:36:12
Mysqli určitě na serveru je. LOL.
Řeším to s podporou cesky-hosting.cz |
||
escape_string Profil * |
#4 · Zasláno: 10. 3. 2008, 20:11:28
Tak nic, ani podpora neví kde je zakopán pes.
Dokonce jsem vložil natvrdo před INSERT str_replace na vložení zpětných lomítek, ale v databázi se zpětný lomítka prostě neobjevily: $msgText = str_replace("'", "''", $msgText); $msgText = str_replace("\\", "\\\\", $msgText); // uložení nové zprávy $sql = "INSERT INTO tabulka () VALUES ('".$msgText."')"; $db->funkceproulozeni($sql, __FILE__, __LINE__); $db->close(); Neslyšel jste někdo o tom, že by třeba phpMyAdmin NEZOBRAZOVAL zpětná lomítka, z nějakého principu???? Už mi fakt hrabe, ale nevím co už. |
||
escape_string Profil * |
#5 · Zasláno: 10. 3. 2008, 20:13:17
Samo že INSERT INTO tabulka (text) ... :-)
|
||
Časová prodleva: 3 dny
|
|||
escape_string Profil * |
#6 · Zasláno: 13. 3. 2008, 09:34:59
Souhlasíte s tímto prohlášením?
Ja tedy zadny problem nevidim. Escapovani podle meho nazoru slouzi k tomu, aby > nebyl zmenen obsah a smysl SQL dotazu specialnimi znaky, jako je napriklad > apostrof, ktery se pouziva pro oddelovani textu. Specialni znaky jsou escapovany > zpetnym lomitkem, to vsak do databaze ulozeno neni, nebot je to pouze pomocnym > znakem, ktery neni soucasti obsahu puvodniho dotazu. > > Chcete-li zpetne lomitko do databaze vlozit, musite ho predem escapovat. Priklad > jsem upravil (na rozbitou cestinu nekoukejte, konzolove editory na serveru moc > cesky neumeji...), ted je na konec textu jeste pridano jedno zpetne lomitko (ve > zdroji escapovane), je vlozeno do databaze. > > S pozdravem > Jakub Mach > > Zakaznicka podpora Cesky hosting > podpora@ceskyhosting.cz > www.cesky-hosting.cz[/i] k čemu je potom funkce stripslahes? Já se domnívám, že zpětná lomítka JSOU při escape_string do databáze ukládána. Prosím, rozlouskněte to už někdo. |
||
nightfish Profil |
#7 · Zasláno: 13. 3. 2008, 09:45:14
pokud použiješ dotaz
insert into tabulka values ('nějaký text\'který obsahuje apostrof') tak se do databáze uloží nějaký text'který obsahuje apostrof to je chování naprosto logické pokud budu chtít do databáze uložit text nějaký text\'který obsahuje escapovaný apostrof musím použít dotaz insert into tabulka values ('nějaký text \\\'který obsahuje escapovaný apostrof') |
||
escape_string Profil * |
#8 · Zasláno: 13. 3. 2008, 09:51:56
Použil jsem toto:
<?php $mysqli = new mysqli('xxxxxxxx', xxxxxxxxxxxx', 'xxxxxxxxxxxxxxxxxxxxxxxxxx', 'xxxxxx'); if(!$mysqli) {die('Chyba při připojení k databázi!');} $slova = " Test's words isn't red "color" "; $ins = "INSERT into test (test_text) VALUES ('".$mysqli->real_escape_string($slova)."')"; $dodb = $mysqli->query($ins) or die ("Chyba: ".$mysqli->error); if($dodb) echo 'Úspěšně vloženo jako: <br />'; echo $ins; ?> Do databáze se mi uložilo Test's words isn't red "color" Proměnná $ins vypsala na sklo: Test\'s words isn\'t red \"color\" Je to v pořádku? |
||
nightfish Profil |
#9 · Zasláno: 13. 3. 2008, 09:54:03
Je to v pořádku?
ano |
||
escape_string Profil * |
#10 · Zasláno: 13. 3. 2008, 09:56:08
A poslední dotaz, co ten stripslashes, mám ho používat? Vždyť nemá co stripovat? (zpětná lomítka)
|
||
Časová prodleva: 17 let
|
0