Új hozzászólás Aktív témák
-
DNReNTi
őstag
válasz csabyka666 #2250 üzenetére
A DROP sem működik ha kulcskapcsolatok vannak a táblák között. A FOREIGN_KEY_CHECKS ki (és be) kapcsolása működő módszer, ha favágó ha nem, de én csak teszteléskor használom, pl ha ki kell nullázzak egy adatbázist, vagy csak néhány táblát. Nem véletlen nem működik se a DROP, se a DELETE se a TRUNCATE, így ezt egy éles oldalon felejtsd el. Kulcskapcsolatok okkal vannak egy adatbázisban.
but without you, my life is incomplete, my days are absolutely gray
-
csabyka666
addikt
válasz DNReNTi #2251 üzenetére
Magyarán a DROP, DELETE, TRUNCATE az nem csak nekem, hanem még a proknak sem engedélyezett?
MOD: ...éles adatbázisban természetesen.
[ Szerkesztve ]
Ágdarálást, kaszálást, területtisztítást vállalok profi gépekkel! Elsősorban Zala megye és vonzáskörzete, de minden megkeresést meghallgatok. +36305633091
-
jocomen
aktív tag
válasz csabyka666 #2250 üzenetére
Lehet félreértem a problémát, de ez nem az, h nem törölhetsz a szülőtáblából, amíg a gyerektáblában van rá hivatkozás? Azaz fordított sorrendben tudod törölni.
Ha fontos, h nullázódjon az id, akkor én kiíratnám scriptbe, és azzal hoznám létre újra az adatbázist.
-
csabyka666
addikt
válasz jocomen #2253 üzenetére
Próbáltam mindenféle sorrendben, sehogy sem engedi. Marad a favágó módszer, vagy pedig DROP-olom a táblákat, és létrehozom újra.
Ágdarálást, kaszálást, területtisztítást vállalok profi gépekkel! Elsősorban Zala megye és vonzáskörzete, de minden megkeresést meghallgatok. +36305633091
-
DNReNTi
őstag
válasz csabyka666 #2252 üzenetére
Nem is egészen értem pontosan mi is a cél. Jobban mondva a célt értem, csak azt nem miért van rá szükség. Egyébként egy tipp: én minden táblában használok egy "active" nevű mezőt. Ez mindig az utolsó, boolean, default: 1. Minden lekérdezésben szerepel a WHERE active = 1; tehát ha "törölni" akarok egyszerűen csak inaktiválom azt a rekordot, és az "megszűnik" létezni az oldal számára. Lehet csak az én hülyeségem, de szerintem adatbázisból törlést kerülni kell amennyire lehet. Hozzáteszem: éles oldalaknál, amíg tesztelsz és telehányod sallanggal az adatbázist akkor persze érdemes legyalulni. Erre pedig a tökéletes módszer ha exportálod csak a struktúrát, eldobod az összes táblát, majd importálod a struktúrát. Lehet van erre szebb megoldás, ha van, engem is érdekel.
but without you, my life is incomplete, my days are absolutely gray
-
jocomen
aktív tag
válasz csabyka666 #2254 üzenetére
Lehet, h többgyerekes? Közvetett hivatkozás?
Ha a kapcsolat kiiktatásával törölsz, és nem minden táblát, azaz valamelyikben marad hivatkozás, akkor ha visszarakod a kapcsolatot, szerintem azért is hibát dob. Nem vagyok biztos, h ilyenkor nullázódik a kulcs.
-
csabyka666
addikt
válasz DNReNTi #2255 üzenetére
Igazából nem fontos, hogy nullázni tudjam, csak tesztelés fázisban vagyok az oldallal, aztán azt gondoltam, hogy én állítottam be valamit rosszul, és azért nem engedi törölni. Főleg azért gondoltam, hogy én szúrtam el, mert teljesen üres táblákon sem működik, de ezek szerint nem ott van a gond, hanem egyszerűen az adatbázis nem fogja sohasem engedni.
Marad a törlés, és újra létrehozás. Azzal nullázódnak az indexek, és végülis az a cél...
Ágdarálást, kaszálást, területtisztítást vállalok profi gépekkel! Elsősorban Zala megye és vonzáskörzete, de minden megkeresést meghallgatok. +36305633091
-
DNReNTi
őstag
válasz csabyka666 #2257 üzenetére
azt gondoltam, hogy én állítottam be valamit rosszul
Megint azt tudom írni, attól függ mi a cél. Külső kulcsot akkor használsz amikor egy másik tábla elsődleges kulcsára akarsz mutatni, ez egy szigorú megszorítás, az adatbázis csak meglévő értéket enged ide felvinni. Jó példa mondjuk egy bármilyen (1:1, 1:n, n:m) kapcsolati tábla. A legegyszerűbb példa hogy érthető legyen:
3 táblád van: felhasznalok, hozzaferes_szintek, felhasznalok_hozzaferese.
Itt a kapcsolati tábla a felhasznalok_hozzaferese összesen két mezővel: felhasznalo_id és hozzaferes_szint_id, mindkettő külső kulcs. Ez tipikus, egyszerű esete a külső kulcs használatának, hogy visszatérjek az eredeti gondolathoz, ha ilyesmire használod, akkor jól használod.but without you, my life is incomplete, my days are absolutely gray
-
csabyka666
addikt
válasz DNReNTi #2259 üzenetére
Igen igen, nekem is ez van. Több-a-többhöz kapcsolat, és ugye van egy (azaz, hogy több is van) kapcsolótábla, amibe beleraktam az elsődleges kulcsokat, illetve a kapcsolat tulajdonságait.
Ágdarálást, kaszálást, területtisztítást vállalok profi gépekkel! Elsősorban Zala megye és vonzáskörzete, de minden megkeresést meghallgatok. +36305633091
-
DNReNTi
őstag
válasz csabyka666 #2260 üzenetére
Akkor jó hírem van: jól csináltad. Az adatbázis pedig azért nem engedi a már emlegetett parancsokat mert a kulcskapcsolat az üres táblákra is érvényes. Például kitörölnéd a felhasznalok táblát, akkor mit vinnél fel a kapcsolati táblába. Egyébként ebben az egyszerű példában, ha először a kapcsolati táblát törlöd, akkor megszűnnek a kulcskapcsolatok, így törölhető / kiüríthető lesz a többi is.
but without you, my life is incomplete, my days are absolutely gray
-
csabyka666
addikt
válasz DNReNTi #2261 üzenetére
Igen, a törlés működik így, egy bizonyos sorrendben, de az ürítés akkor sem. Most már azt mondom: érthető okokból.
Ágdarálást, kaszálást, területtisztítást vállalok profi gépekkel! Elsősorban Zala megye és vonzáskörzete, de minden megkeresést meghallgatok. +36305633091
-
csabyka666
addikt
Üdv ismét!
SQL injection ellen mi (vagy mik) a legjobb függvények? Ezt találtam: mysql_real_escape_string(), és kérdeznélek benneteket, hogy ez elegendő, vagy küldjek rá még másik függvényeket is?
(Nem OOP a projekt, hanem az alap mysql_* függvényeket használom.)Más: eddig ha ' (aposztróf) karakter szerepelt a beszúrt mezőben, akkor mindig hibát dobott az SQL. Most, hogy lekezeltem minden beviteli mezőt mysql_real_escape_string() függvénnyel, már bekerülnek az '-os stringek is az adatbázisba. Ez így rendben van, vagy ezzel nyitottam egy biztonsági rést?
Ágdarálást, kaszálást, területtisztítást vállalok profi gépekkel! Elsősorban Zala megye és vonzáskörzete, de minden megkeresést meghallgatok. +36305633091
-
PumpkinSeed
addikt
válasz csabyka666 #2263 üzenetére
Ez php függvény nem SQL: mysql_real_escape_string()
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
csabyka666
addikt
válasz PumpkinSeed #2264 üzenetére
Jogos, azt nem mondtam, hogy PHP-ben kellene megoldanom. Irány a PHP topic...
Ágdarálást, kaszálást, területtisztítást vállalok profi gépekkel! Elsősorban Zala megye és vonzáskörzete, de minden megkeresést meghallgatok. +36305633091
-
válasz csabyka666 #2263 üzenetére
Én egyáltalán nem hagyom, hogy sql injectionra alkalmas karaktert bevigyen az user. Ellenőrizni szoktam, hogy a bevitt adatban van-e ilyen karakter, és ha igen, hibát dobok. Legyen meg pontosvessző meg aposztróf nélkül.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
csabyka666
addikt
válasz bambano #2266 üzenetére
Ezt is el tudom fogadni, de esetemben például egy áruház nevét kell felvinni, és pl. a G'Roby nevében van aposztróf, és bár anélkül is meglennénk, nehogy ezen akadjon fenn az user, hát valahogy bele kellett vennem...
Ágdarálást, kaszálást, területtisztítást vállalok profi gépekkel! Elsősorban Zala megye és vonzáskörzete, de minden megkeresést meghallgatok. +36305633091
-
csabyka666
addikt
Más jellegű kérdés. Számít az valahol is, hogy az SQL query-ben mikor használok \"$valtozo\"-t, vagy '$valtozo'-t vagy simán $valtozo-t, netán '".$valtozo."'-t? Úgy vettem észre, hogy többféleképpen is működik, szóval nem tudom, hogy melyik a helyes...vagy teljesen mindegy ez? Működjön, és kész?
Ágdarálást, kaszálást, területtisztítást vállalok profi gépekkel! Elsősorban Zala megye és vonzáskörzete, de minden megkeresést meghallgatok. +36305633091
-
Sk8erPeter
nagyúr
válasz csabyka666 #2268 üzenetére
Eleve rossz a megközelítésed, ilyet SOHA nem csinálunk, nem konkatenálunk query-t változókkal, prepared statementeket használunk, ahogy a PHP topicban neked már vagy hússzor leírtuk, és a probléma meg van oldva.
(#2266) bambano :
Őő, hát azért az aposztróf vagy épp idézőjel karakter talán nem egy olyan extra karakter, ami miatt hibát kéne dobni a felhasználónak... lásd épp az említett példát.Sk8erPeter
-
válasz Sk8erPeter #2269 üzenetére
puhány vagy
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
válasz Sk8erPeter #2271 üzenetére
ezt a mondatodat nem teljesen értem. nem parázok az sql injectiontól, egyszerűen kitiltottam a lehetőségét is.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
Sk8erPeter
nagyúr
válasz bambano #2272 üzenetére
Azt írtad, "Én egyáltalán nem hagyom, hogy sql injectionra alkalmas karaktert bevigyen az user.", ebből arra lehetne következtetni, hogy nálad a felhasználótól érkező aposztróf már alkalmas lehet SQL Injectionre, amitől tartani kell, tehát jobb, ha már az alkalmazásban kiszedjük, mielőtt feltöltenénk adatbázisba. De én is csak szúrkálódom, nem kell ám mindent komolyan venni.
Igaz, az összefüggést a két dolog közt még mindig nem értem, hogy AZÉRT tiltod az aposztróf bevitelét, mert alkalmas lehetne SQL Injectionre...
[ Szerkesztve ]
Sk8erPeter
-
válasz Sk8erPeter #2273 üzenetére
attól, hogy a zseton páncélban van, még bezárom az ajtót
mondjuk az is igaz, hogy a program, amit írtam, nem széles körnek szól, de legalább kényes adatok vannak benne...
[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
válasz Sk8erPeter #2273 üzenetére
no, akkor megfogalmazom helyetted: azt gondolod, hogy azért félek az sql injectionra alkalmas karakterektől, mert a program többi része nincs ellene felkészítve.
"AZÉRT tiltod az aposztróf bevitelét, mert alkalmas lehetne SQL Injectionre...": igen, azért tiltom, de ez, szerintem, természetes.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
Sk8erPeter
nagyúr
válasz bambano #2275 üzenetére
Köszönöm, nem szükséges helyettem megfogalmazgatni bármit is, magamtól is megy, meg úgy látom, így is sikerült pár perccel később felfognod.
Szerintem meg nem, nem természetes, hogy tiltod az aposztrófot egy cégnévben, ahogy az sem, hogy miért merül fel egyáltalán a para, hogy ez SQL Injectiont okozhatna, ha normálisan prepared statementeket használsz, de nekem mindegy.Sk8erPeter
-
PumpkinSeed
addikt
Újabb Oracle SQL-el kérdés, vagyis kettő.
Az egyik a sémákhoz kapcsolódik. Nem értem, hogy mik is ezek hol is használják, és miért. Azt olvastam róla, hogy lehet séma szinte minden sql objektum, de hogyan is, meg miként is?
Illetve, a másik a szekvenciákkal. Ha létrehozok egy szekvenciát a CREATE SEQUENCE utasítással akkor azt azután hogyan tudom használni?
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
válasz Sk8erPeter #2276 üzenetére
"nem szükséges helyettem megfogalmazgatni bármit is": rendben, akkor maradjon a te megfogalmazásod, ami egyébként helytelen.
"miért merül fel egyáltalán a para, hogy ez SQL Injectiont okozhatna": nem értem. aposztróftól nem merül fel, hogy sql injection lehetne? de, felmerül. ettől egy teljesen független kérdés, hogy az adatbáziskapcsolatod kezelése védve van-e az sql injection ellen vagy sem. ha nem ellenőrzöd az inputot ilyen ellen, akkor lemondasz a védelem egy lehetséges szintjéről.
szerk: az elképzelés, hogy nem foglalkozom az inputtal, mert a prepared statement elvileg véd az sql injection ellen, hamis biztonságérzetet ad. pláne egy olyan korszakban, amikor crontabból küldik a heti snowden dokumentet.
[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
Sk8erPeter
nagyúr
válasz bambano #2278 üzenetére
Hinnnye, de fárasztó vagy. Ezeket az agymenéseket miért nem rakod inkább OFF-ba?
Jójó, legyen igazad, rohadjon meg a júzer, és ne akarjon feltölteni aposztrófot tartalmazó stringet, hát mégis mi az anyját képzel?? A cégneve tartalmaz aposztrófot? Kapja be, menjen szépen a Cégbíróságra, változtassa meg! HÁNEHOGYMÁHE!"az elképzelés, hogy nem foglalkozom az inputtal, mert a prepared statement elvileg véd az sql injection ellen, hamis biztonságérzetet ad. pláne egy olyan korszakban, amikor crontabból küldik a heti snowden dokumentet"
Mi van, emba'? Valóban sok az összefüggés az NSA és az aposztrófok között, olyannyira, hogy csak a "biztonságérzet" szó használata miatt nyilván tök indokolt volt ilyen moslékot idekeverni. Mondjuk most pont tök szórakoztató ilyeneket olvasgatni, amikor valaki túlheveskedi a kommentjeit, de valószínűleg kicsit más hangulatban írjuk épp a hsz.-einket.Sk8erPeter
-
martonx
veterán
válasz PumpkinSeed #2277 üzenetére
Sémákkal tudsz adatbázisokat / adatbázis részeklet elkülöníteni. Olyan ez, mint programozásban a namespace.
Sequence: már a nevében benne van, hogy mi ez, és mire jó. Nem fogod kitalálni, egy folyamatosan növekvő számláló. Hogy mire jó azt a képzeletedre bízom, pl. adatbázis sorokat azonosítani.
Én kérek elnézést!
-
PumpkinSeed
addikt
válasz martonx #2280 üzenetére
Köszönöm megint.
Igen azt tudom, hogy mire jó.
De,CREATE SEQUENCE supplier_seq
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;itt ez a kód de, hogy lehet ezzel műveletet végezni? Mert ez most lefut 99999^2x de semmit nem csinál. Miképpen lehet ezt valami insert into utasítás mellé tenni?
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
bpx
őstag
válasz PumpkinSeed #2281 üzenetére
első találat
-
Ablakos
őstag
válasz PumpkinSeed #2281 üzenetére
Mi az hogy lefut? Létrehoztál egy sequencia objektumot. Ha létrehozol egy táblát az sem "fut le".
Hivatkozhatsz a pseudooszlopaira nextval vagy curval-lal.
tehát: select supplier_seq.nextval from dual; A sequencia következő elemét adja. Kiválóan alkalmazható egy unique key megszorítással ellátott oszlopot egyedi azonosítóval ellátni. -
Sk8erPeter
nagyúr
válasz PumpkinSeed #2281 üzenetére
Például beillesztésnél tudod felhasználni a szekvenciát.
Vegyünk egy nagyon egyszerű példát: van egy supplier nevű táblád (az általad létrehozott supplier_seq alapján), első mezője egy int id, ami primary key is egyben. Másik mezője legyen a példa kedvéért egy name mező, nvarchar2(50) típussal.
Feltöltesz valami újat, pl.:insert into supplier
values (supplier_seq.nextval, 'blabla');A lényeg tehát a supplier_seq.nextval, ezzel tudod kivenni a szekvencia soron következő értékét.
Sk8erPeter
-
PumpkinSeed
addikt
Köszönöm a segítségeteket.
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
PumpkinSeed
addikt
SELECT
case UPPER(TO_CHAR(TO_DATE('1994-01-06','YYYY-MM-DD'),'DAY')) WHEN 'THURSDAY' THEN 'CSÜTÖRTÖK'
WHEN 'MONDAY' THEN 'HÉTFŐ'
else 'Vasárnap' END AS Valami
from dual;Valamiért mindig az ELSE ág hajtódik végre holott Csütörtököt kellene mondjon.
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
bpx
őstag
válasz PumpkinSeed #2286 üzenetére
Azért, mert alapértelmezett esetben a TO_CHAR dátum bemenet esetén a lehetséges leghosszabb kimenetre készülve rak paddinget (extra space-ek), ezért amikor a te 'THURSDAY'-t vársz, ott valójában 'THURSDAY '-t kapsz, mert a 'WEDNESDAY' a leghosszabb, és minden napot 9 karakterre egészít ki emiatt.
Ha ezt nem szeretnéd, akkor a 'DAY' helyett használj 'FMDAY'-t, amiben az FM kikapcsolja a paddinget.
Ezen kívül:
- az UPPER felesleges, mert a 'DAY' miatt eleve nagybetűsen kapod az eredmény ('day' - kisbetű)
- ha a TO_CHAR-t a megfelelő NLS paraméterrel kiegészíted, akkor rögtön magyarul kapod a napot
- az INITCAP függvénnyel lehet a szavak kezdőbetűjét nagybetűre cserélni, ha ez az igényPl:
SQL> SELECT INITCAP(TO_CHAR(TO_DATE('1994-01-06','YYYY-MM-DD'),'FMDAY', 'NLS_DATE_LANGUAGE = HUNGARIAN')) AS VALAMI FROM DUAL;
VALAMI
------------
Csütörtök[ Szerkesztve ]
-
jocomen
aktív tag
mysql-ben ha egy oszlop adattípusát módosítom boolean-ra, miért nem marad úgy, miért vált vissza tinyint-re, amit soha nem adtam meg neki ??
kapcsolatokat szintén nem hajlandó berajzolni: néha megy, néha nem ... tkm ki van vele
Ennyire bugos a xampp? -
chabeee
tag
Sziasztok,
MySQL-t szeretnék használni és abban létrehozni egy táblát, ami tartalmaz egy másik táblára mutató idegen kulcsot. Így szeretném létrehozni:
"CREATE TABLE KONYVEK"+
" (ISBN INT,"+
"konyv_id INT PRIMARY KEY NOT NULL,"+
"cim CHAR(50),"+
"szerzo CHAR(50),"+
"FOREIGN KEY(user_id) REFERENCES FELHASZNALOK(user_id),"+
"allapot INT,"+
"kiadas_eve INT)";Viszont a Foreign key-es sorra exception-t kapok, és nem értem, miért, eddig ahol utána néztem mindenhol így írják.
hiba:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Key column 'user_id' doesn't exist in tablepedig létezik,
előre is köszi
[ Szerkesztve ]
-
jocomen
aktív tag
-
-
Akcept
tag
válasz Sk8erPeter #2279 üzenetére
Csak szép csendben kérdezem meg miért is nem lehet azt az aposztrófot másra cserélni, és akkor a kecske is jóllakik, meg a káposzta is megmarad. Azaz a cégnévben benne lesz az aposztróf, az adatbázisban meg nem:
$szoveg = str_replace("\'","'",$szoveg);
aztán jöhet egyéb védelem is. Persze lehet én értelek félre benneteket... -
chabeee
tag
Új hozzászólás Aktív témák
- iPhone 14 Pro 128 GB Space Black, 11 hónapos, kártyafüggetlen, 2024. május végéig garis , akku 91%
- Asus VivoBook X509JA-BQ904T
- HP EliteBook 640 G9 Ezüst (14" / Intel i5-1235U / 16GB / 512GB SSD / Win 11 Pro) -10% Most 203.990 F
- Lenovo M810z AIO Core I5 6400 4x2700/8GB/120G SSD/wifi/cam 21,5 -10% 66.950 ft
- Microsoft Surface Book 2 - i7-8650u/8GB/256GB SSD/Windows 11 -. 10% Most Csak 125990 Forint