Autor | Zpráva | ||
---|---|---|---|
ra100 Profil * |
#1 · Zasláno: 4. 8. 2011, 15:30:25
Zdravím všetkých.
Už neakú dobu bojujem z nasledujúcim riadkom - $sql_upravdb = 'update lb set nazov = '.$_SESSION['nazov'].' where nazov = '.$uni; Následne je $sql_upravdb $objekt = mysqli_query($db_spojenie,$sql_upravdb); Premenná $_SESSION['nazov'] $uni Tie prichádzajú a po vyvolaní cez echo Keď zmením $sql_upravdb = 'update lb set nazov = '.$_SESSION['nazov'].' where nazov = '.$uni; za písané $sql_upravdb = 'update lb set nazov = "xyz" where nazov = "zyx"; tak tiež funguje bez problémov... Nechapem, prečo riadok -
Už som vyskúšal všetky možné kombinácie - ", ', ;, a roznych zátvoriek a úvodzoviek. Ďakujem za rady. |
||
Tori Profil |
#2 · Zasláno: 4. 8. 2011, 16:04:39 · Upravil/a: Tori
'update lb set nazov = "xyz" where nazov = "zyx"; 'update lb set nazov = "'.$_SESSION['nazov'].'" where nazov = "'.$uni.'"'; Jinak mysql_error() by vám v tom předchozím zápise bez uvozovek mělo napsat něco jako "Error: Unknown column name 'xyz' near 'xyz where nazov...'". ↓byla, ale jen o vteřinku :) |
||
DarkMeni Profil |
#3 · Zasláno: 4. 8. 2011, 16:04:40 · Upravil/a: DarkMeni
Zkoušel jsi přidat chcípnutí a vypsání syntaxní chyby v sql?
Myslim to jako takto: echo "Kontrola proměnných:<br />\n"; echo "Proměnná z SESSION: ".$_SESSION['nazov']."<br />\n"; echo "Proměnná uni: ".$uni."<br />\n"; //Upravený dotaz: mysql_query("UPDATE `lb` SET `nazov`='".$_SESSION['nazov']."' WHERE `nazov` = '".$uni) or die("Chyba: ".mysql_error()); echo "<br />\nDotaz proběhl nejspíš úspěšně (Protože skript nechcípnul)"; Jsi si jistý že si to do $_SESSION ukládal? (Není to náhodou v $_POST?). -> To samí se dá zapsat i do proměnné a pak to dát do dotazu z proměnné ale takle mi to připadá úspornější. Nebo ti to píše nějaké chyby ze strany PHP? -> Ou, koukám že Tori byl(a) rychlejší. |
||
ra100 Profil * |
#4 · Zasláno: 4. 8. 2011, 16:19:59
Tori:
Ďakujem. tvoj kod - 'update lb set nazov = "'.$_SESSION['nazov'].'" where nazov = "'.$uni.'"'; Už všetko funguje, ako ma ) |
||
ra100 Profil * |
#5 · Zasláno: 4. 8. 2011, 16:25:14
Tori:
...ešte dodám,že som použil mysql_real_escape_string $sql_upravdb = 'update lb set nazov = "'.mysql_real_escape_string($_SESSION['nazov']).'" where nazov = "'.$uni.'"'; kde $_SESSION['nazov']). $_post['nazov'] Dúfam teda, že je to ošetrené dobre. Eśte raz ďakujem. |
||
Joker Profil |
#6 · Zasláno: 4. 8. 2011, 16:26:29 · Upravil/a: Joker
ra100:
„dúfam, že je to správne“ Ano, ale co ještě proměnná $uni? edit: Escapované by mělo být všechno co přijde zvenku (od uživatele). |
||
ra100 Profil * |
#7 · Zasláno: 4. 8. 2011, 16:27:23
DarkMeni:
..hej, zlá sintaxia mi hádzala chyby. V každom prípade aj tvoj kód funguje, takže ďakujem za cennú radu. |
||
ra100 Profil * |
#8 · Zasláno: 4. 8. 2011, 16:36:36
Joker:
Ano, ale co ještě proměnná $uni? $uni $_GET['$uni'] napr - echo '<a href="?uni='.$riadok['nazov'],'">'.$riadok['nazov'],'</a>'; ..aj to mam escapovat ? |
||
ra100 Profil * |
#9 · Zasláno: 4. 8. 2011, 16:40:00
ra100:
..dodam že $uni $uni = $_GET['uni'] |
||
Tori Profil |
#10 · Zasláno: 4. 8. 2011, 16:43:28
ra100:
Jak se něco objeví v prohlížeči, tak se to dá upravit, formulářová pole, JavaScript proměnné a URL nejsnadnějc. Věřila bych akorát tomu, co je buď napevno ve skriptu (konstanty), nebo jsem to zrovna teď vytáhla z DB. Je to sice trochu paranoia, ale těch pár znaků navíc je nízká cena za větší bezpečnost. |
||
ra100 Profil * |
#11 · Zasláno: 4. 8. 2011, 16:47:18
Tori:
...súhlas . |
||
pcmanik Profil |
#12 · Zasláno: 4. 8. 2011, 16:54:51
ra100:
Ked pouzivas mysqli, je trocha cudne volat "obycajnu" mysql funkciu nemyslis? A naviac, ked uz vyuzivas mysqli a zjavne na to nemas dovod, tak si nastuduj prepared statements. |
||
ra100 Profil * |
#13 · Zasláno: 4. 8. 2011, 16:56:16
..ďalšia otázka -
v $uni mysql_real_escape_string($_GET['uni']); $_SESSION['nazov'] mysql_real_escape_string mysqli_real_escape_string V skripte totiž používam napr mysqli_connect mysqli_query |
||
ra100 Profil * |
#14 · Zasláno: 4. 8. 2011, 16:57:22
pcmanik:
yoyo, to ma neminie. |
||
pcmanik Profil |
#15 · Zasláno: 4. 8. 2011, 17:03:32
ra100:
Myslim ze rozdiel je len to i, ale ked uz mysqli, tak mysqli vsade nie? A SESSION osetrovat asi nemusis, pokial tam nevkladas nebezpecne data od uzivatela. |
||
Tori Profil |
#16 · Zasláno: 4. 8. 2011, 17:12:54
ra100:
„Je v tom neaký zásadný rozdiel?“ Tak se koukněte do manuálu: mysqli_ má jako první parametr identifikátor DB spojení, u mysql_ je jako druhý a nepovinný. Kromě toho, tahle funkce se může používat až po mysql(i)_connect, protože bere v úvahu znakovou sadu, která je nastavená pro komunikaci s databází - a to bez existujícího DB spojení nezjistí. |
||
ra100 Profil * |
#17 · Zasláno: 4. 8. 2011, 18:07:15
ok..
ďakujem vám za cenné rady ) |
||
Časová prodleva: 13 let
|
0