Autor | Zpráva | ||
---|---|---|---|
IdemeNaHavaj Profil |
#1 · Zasláno: 19. 5. 2014, 17:20:37
Ahoj,
mám vážny problém a neviem čo s tým. Tak pre príklad mám premenné $nova_hodnota = "Rozmer (Auta)"; // e $stara_hodnota = "Rozměr (Auta)"; // ě a nasledujúci SQL UPDATE tabulka SET stlpcek = '{$nova_hodnota}' WHERE stlpcek = '{$stara_hodnota}' Som si stý že SQL je dobre PRETOŽE: ak ho zadám do PHPMyAdmina, a prepíšem si tie premenné za tie hodnoty premenných, tak mi to prepíše v databáze v poriadku. No v PHP súbore nie. Prosím o radu. Ďakujem. |
||
Tori Profil |
#2 · Zasláno: 19. 5. 2014, 17:40:26
Když si vypíšete hotový SQL dotaz, je v pořádku? Provede se ten dotaz? mysql(i)_error hlásí nějakou chybu? Najde podmínka WHERE odpovídající řádek? Máte správně nastavené kódování pro připojení k DB?
|
||
IdemeNaHavaj Profil |
Moje pripojenie do DB:
$mysqli = new mysqli("localhost", $user, $pass, $db, 0, $socket); $mysqli->query("..prikaz...") or die("error"); SQL dotaz musi byt v poriadku, pretoze v PHPMyAdmin-e funguje a údaj prepíše. Teraz som si všimol, že v PHPMyAdmin keď "Search" vyhľadám slovo "%Rozměř%" tak mi to nájde aj s normálnym "e" (Rozmer). Takže ani tam to nereaguje na diakritiku? Kódovanie tej tabuľky je utf8_general_ci a v PHP súbore mám <meta charset="UTF-8">
|
||
Tori Profil |
#4 · Zasláno: 19. 5. 2014, 18:26:56
IdemeNaHavaj:
„Teraz som si všimol, že v PHPMyAdmin keď "Search" vyhľadám slovo "%Rozměř%" tak mi to nájde aj s normálnym "e" (Rozmer).“ A to je proto, že: „Kódovanie tej tabuľky je utf8_general_ci“ (koukněte se na tabulku porovnávání general_ci, jaké znaky se berou jako totožné. Musel byste použít utf8_czech_ci, aby se rozlišovalo "e" a "ě". |
||
IdemeNaHavaj Profil |
#5 · Zasláno: 20. 5. 2014, 08:37:27
Niečo na tom asi bude, ale prečo to teda v phpmyadmine v "SQL" okne funguje aj na utf8_general?
|
||
Fisir Profil |
#6 · Zasláno: 20. 5. 2014, 08:50:15
Reaguji na IdemeNaHavaje:
Zkus $mysqli->set_charset('utf8'); .
|
||
Radoslav Profil * |
#7 · Zasláno: 20. 5. 2014, 12:25:29
IdemeNaHavaj:
V php subore skontroluj kodovanie, nie meta tag, ale ako mas ulozene data, nastav utf-8 a samozrejme pripojenie k databazi http://screencast.com/t/z0ko9amQL a ako uviedol Fisir, proceduralne PO pripojeni k db PRED zadanim dotazu, ja pouzivam: mysqli_set_charset($link, "utf8"); |
||
Fisir Profil |
#8 · Zasláno: 20. 5. 2014, 12:30:08
Reaguji na Radoslava:
„proceduralne“ Prosím, to sem nemotej. Začátečníkům zbytečně zamotáš hlavu. (IdemeNaHavaj už tu začal používat objektový kód, tak ať v tom pokračuje. Ačkoliv míchat procedurální a objektový přístup dohromady je samozřejmě možné.) Na tom, jestli k databázi přistupuješ objektově nebo procedurálně nezáleží. |
||
Radoslav Profil * |
#9 · Zasláno: 20. 5. 2014, 13:52:00
Fisir:
jasne, ze OO kod je vhodnejsi, ale nevsimol som si, ze pouziva OOP az ked si na to upozornil. Ale je to kazdopadne jedno, ja som ho nemal zaujem pomotat, urcite pozna rozdiel medzi proceduralnym a OO kodom. - zbytocny off topic |
||
Časová prodleva: 10 let
|
0