Új hozzászólás Aktív témák
-
Protezis
őstag
Az alabbi txt fajlban ([link])
talalhato egy 3 tablas adatbazis.
Lent talalhato 3 lekerdezes, melyek ugyanazt az eredmenyt adjak. Az lenne a kerdesem, hogy melyik gyorsabb, jobb, hatekonyabb stb.?
(eletszerubb adatok nem jutottak eszembe )
[Szerkesztve] -
Forest_roby
őstag
Most hirtelenjében szívinfarktust kaptam, olyan hibát vettem észre.
Ez, hogy - hogy működik:
mysql> select loginName, user_id from users where loginName='bUCO';
+-----------+---------+
| loginName | user_id |
+-----------+---------+
| Buco | 3 |
+-----------+---------+
1 row in set (0.00 sec)
mysql>
Miért érzéketlen a kis és nagybetűkre az adatbázisom?
És hogy lehet ezt a problémát megoldani?
Vagy ennek a select -nek így kell működnie?
Előre is köszi!
Forest-=Legyél Laza!=- __ ''Have you tried turning it off and on again?'' __ ''Is it definitely plugged in?'' /o\ :D:D
-
tkazmer
addikt
válasz Forest_roby #356 üzenetére
Ez a szerver verziójától függ. Nekem a saját szerveremen szintén nem tesz különbséget a kis és nagybetűk között, ellenben az extra.hu-n már megkülönbözteti őket.
úgy tervezték, hogy kibirjon egy atomtámadást is. De nekünk komolyabb fegyvereink vannak, mint pl Béla bá, a földmunkagépkezelő
-
Forest_roby
őstag
épp most néztem utánna.
minden mysql így műxik asszem jól, de ha varchar binary -két tárolom el a case sensitive adatokat, akkor működni fog!!!
Mindenesetre köszi a választ!-=Legyél Laza!=- __ ''Have you tried turning it off and on again?'' __ ''Is it definitely plugged in?'' /o\ :D:D
-
Forest_roby
őstag
válasz Forest_roby #358 üzenetére
vagy varbinary pontosabban! és műxik is!!
mysql> select loginName, user_id from users where loginName='bUCO';
Empty set (0.00 sec)
mysql> select loginName, user_id from users where loginName='Buco';
+-----------+---------+
| loginName | user_id |
+-----------+---------+
| Buco | 3 |
+-----------+---------+
1 row in set (0.00 sec)
mysql>
-=Legyél Laza!=- __ ''Have you tried turning it off and on again?'' __ ''Is it definitely plugged in?'' /o\ :D:D
-
VladimirR
nagyúr
probalok adatbazisba helyezni egy csunya string-et az adatbazishoz
a string azert csunya, mert a sha1( "idejonvalami", true ); fuggveny eredmenye, vagyis mindenfele karakterek vannak benne
a gond az, hogy nem akar sikerulni, nem azt teszi be, amit kellene
a problema abban leledzik, hogy az adatbazis utf8-as es en ennek megfeleloen az adatbazis-kapcsolat letrehozasa utan beallitom a character set es a names valtozokat utf8-ra
mysql_query( "SET CHARACTER SET utf8;" );
mysql_query( "SET NAMES utf8;" );
ha viszont ezt nem tesz meg, akkor a fentebb kifogasolt problema megszunik, a karaktersor megfeleloen kerul az adatbazisba
ekkor eppen csak az ekezetes karaktereim nem tudnak madukkal mit kezdeni
van erre valami megoldas azon kivul, hogy 20 helyett 40 byte-on tarolom az sha1 hash-eket? -
Lortech
addikt
válasz VladimirR #360 üzenetére
Korán van még, lehet ezért nem világos.
Egy hash esetén miért kéne hogy átkódold, és helyesen jelenjeg meg az adatbázisban, vagy bármi átalakítást végezz rajta? Ezesetben szvsz az a legjobb, ha nem csinálsz vele semmit, úgy rakod az adatbázisba, ahogy legeneráltad, így kivételkor sem kell odafigyelni, hogy visszaalakítsd, mert (gondolom későbbi összehasonlítás céljából tárolod el a hasht) az összehasonlítandó hash is ebben a kódolásban van.Thank you to god for making me an atheist
-
VladimirR
nagyúr
válasz VladimirR #362 üzenetére
ehh, naszoval tenyleg koran van meg
szoval az a gond, hogy ha egy lekerdezesben akarok adatbazisba illeszteni egy usernevet es egy jelszohoz tartozo binaris sha1 hash-t, akkor az egyik nem fog latszani, attol fuggoen, hogy a kapcsolategyeztetes be van-e allitva utf8-ra -
Jester01
veterán
válasz VladimirR #365 üzenetére
A mező collation legyen BINARY. Ha ez még mindig nem elég, akkor add be hexában.
mysql> create table t(hash char(20) BINARY);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t values (0xC3A9);
Query OK, 1 row affected (0.00 sec)
mysql> select hex(hash) from t;
+-----------+
| hex(hash) |
+-----------+
| C3A9 |
+-----------+
1 row in set (0.00 sec)Jester
-
zeix
senior tag
Érdeklődnék, hogy hogyan tudnám kiszűrni a duplán szereplő adatokat egy adatbázisban?
Előre is köszönöm. -
garfield-r
tag
Üdv mindenkinek!
Lenne egy nem szokványos kérdésem: hol találhatok értelmes, magyar nyelvű anyagot ehhez a témához: SQL Server Client Network Utility Mert most töltöm a szakmai gyakorlatomat egy programozó cégnél és itt ezt a témát adták ki nekem, h írjak róla jópár oldalt, amit majd le kell adnom a fősulimon....
Na szóval a nagy gondom az h magyarul se nagyon tudom h pontosan mit takar a cím + a Microsoft oldalát már végignztem és ott nem találtam semmit ami jó lehet első ránézésre mert ott az SQL Server 2000, 2005 és 2008-at ismerttették ezerrel... -
vancha2
aktív tag
Lenne 2 kérdésem:
1. Van egy adattáblám ebben 3 mező: id, link, letoltve.
Hogy tudom ebből például a 2. rekordnak a letöltve mezőben levő értékét lekérdezni, és kiírni php-val? (az id alapján)
2. Hogy tudok php-ból ennek az értékéhez hozzáadni egyet?
Előre is köszönöm a segítséget -
vancha2
aktív tag
Köszi ez így tök jól működik!
Viszont van még valami, amit nem tudok: van egy űrlapom, abban egy szöveges mező, amink a neve email. Ezt küldöm át a php fájlnak, és amit a szöveges mezőbe írnak email címet, azt fölveszi az adatbázisomba. A táblámban van egy id és egy email nevű mező. Ezt sikerült összehoznom, de nem működik:
$email = $_POST['email'];
$parnacs = ''insert into tabla (email) values ('$email')'';
mysql_query($parancs);
Mi benne a hiba?
[Szerkesztve] -
cucka
addikt
az első sorban elírtad a változó nevét ($parnacs) :)
egyébként szerintem ez jónak tűnik (leszámítva persze azt, hogy nincs levédve az, amit az adatbázisba insert-elsz). ha mégsem működik, első körben irasd ki az sql query-det, onnan látni fogod, mi a gond.
esetleg az okozhat még gondot, ha mondjuk a tábládban az id oszlop not null-ra van állítva és nem auto increment-es, akkor elvileg mysql hibát kell kapjál. ennek kiderítésére (és úgy általában az sql hibák feltárására a következő módon érdemes query-ket futtatni:
mysql_query($parancs) or die (mysql_error()); -
Lortech
addikt
parnacs - parancs ? Bár ezt valószínűleg csak most írtad el.
Hibaüzenet volt? Vagy csak nem csinálta amit kell?
A kód működőképes, de megfelelő működéshez a környezetnek (főleg adatbázisnak) passzolnia kell. echo mysql_error(); dob valamit?
$email változót írasd ki, hogy átjött-e.
Ja még az előzőben az updatehez kell egy where id = x, mert így minden sor letoltve mezőjéhez hozzáad egyet.
szerk: Lassú voltam.
[Szerkesztve]Thank you to god for making me an atheist
-
vancha2
aktív tag
Én is észrevettem, hogy akkor minden sorhoz hozzáad egyet, de sikerült magamtól is kiegészíteni.
Az első alkalommal működik az űrlap, jól fölveszi az adatbázisba, de második alkalommal már ezt a hibaüzenetet kapom:
mysql_query(): MySQL error: Duplicate entry '0' for key 1 in /nfs/extra/v/vc/vcsabi/wwwroot/proba/hirlevel.php: mysql_query on line 61
in /nfs/extra/prepend/prepend.php(187) : system created function on line 32
Ez most mit jelent? Még egy rekordot akar felvenni ugyanazzal az id-val minta ami az előzőnek van? -
Lortech
addikt
Én is észrevettem, hogy akkor minden sorhoz hozzáad egyet, de sikerült magamtól is kiegészíteni.
Jól van na, zsenikém.
Igen, épp erre írtam, hogy a kód jó, csak a z adatbázis háttérnek is passzolnia kéne.
Mivel insertnél csak az email mezőt adod meg, ezért az id automatikusan 0-t kap, az íródik be, viszont id-nél vsz megkövetelted az egyediséget, kulcsnak állítottad be, ezért második alkalommal már nem engedi hogy 0-t tegyél bele, mivel akkor két 0 id-s sor lenne. Ezért kéne auto_increment tulajdonságot megadni az id mezőre. Így ''insert into tabla (email) values ('$email')''; parancsnél az id automatikusan a következő értéket veszi fel, és nem lesz duplikáció.Thank you to god for making me an atheist
-
Louloudaki
aktív tag
1. amikor létrehozod a a táblát, adatbázis adminisztrátorban bejelölöd. pl phpmyadminban az extra alatt van legördülőben.
2. utólag jelölöd be (szintén phpmyadmin pl: ceruza a kívánt oszlopnál, és extra alatt ugyanúgy kiválaszt)
3. ha nem használsz adminisztrátor progit:
- tábla létrehozása
CREATE TABLE `x` (
`id` TINYINT( 1 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`x` VARCHAR( 10 ) NOT NULL
) ENGINE = MYISAM ;
- tábla módosítása
ALTER TABLE `x` ADD PRIMARY KEY(`id`); -
Louloudaki
aktív tag
válasz Louloudaki #382 üzenetére
utsó sor mod:
ALTER TABLE `x` CHANGE `id` `id` TINYINT( 1) UNSIGNED NOT NULL AUTO_INCREMENT
[Szerkesztve] -
vancha2
aktív tag
válasz Louloudaki #383 üzenetére
Köszi a segítséget neked és Lortech-nek is, így már működik.
Még egy utolsó kérdés: hogy tudom azt leellenőrizni, hogy a beírt email címet tartalmazza-e az adatbázis, mert ha igen akkor nem venném fel mégegyszer. -
Louloudaki
aktív tag
-
shev7
veterán
válasz Louloudaki #386 üzenetére
ha primary key vagy unique
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
vancha2
aktív tag
válasz Louloudaki #388 üzenetére
THX
-
Protezis
őstag
Adatbazisban tarolt felhasznalok egymasnak uzeneteket kuldhetnek. Ezeket az uzeneteket ugyancsak adatbazisban tarolom.
A kovetkezo problemaba botlottam: ha egy felhasznalo ki szeretne torolni egy korabban altala elkuldott uzenetet, azt nem torolheti az adatbazisbol, ugyanis akkor a cimzett se olvashatna el tobbe azt az uzenetet. Persze forditva is hasonlo a helyzet.
2 megoldas jutott eszembe:
a) 2 tablat hasznalok. Egyet az elkuldott uzenetekhez, egyet a fogadott uzenetekhez. Ez sajnos nagyfoku redundanciat jelent, ugyanis minden uzenet 2-szer van tarolva, de egyszeru a torles megvalositasa.
b) 2 mezot hasznalok annak tarolasara, hogy a kuldo, illetve a fogado torolte -e a levelet. Ekkor minden torlesnel ellenoriznem kell, torolte -e mar a masik fel korabban a levelet. Ha igen, akkor tenyleg torolhetem a bejegyzest, ha nem, akkor a megfelelo mezoben toroltre allitom a levelet.
Bar a b) verziot tartom jobb otletnek, kivancsi vagyok ti mit gondoltok. Ha van mas otletetek, azt is szivesen veszem. -
cucka
addikt
válasz Protezis #390 üzenetére
első változat nem jó, mert nagyon sok fölösleges adatot tárolsz.
második nem jó, mert kizárod a lehetőségét az esetleges több címzettes levélnek
szerintem a harmadik, középutas megoldás a jó:
van egy kapcsoló táblád a levél, a küldő és a fogadó között, amiben a köv mezők vannak:
kuldo_id, fogado_id, level_id, megnezett, torolt.
első három külső kulcs és a megfelelő táblában mutat egy sorra, utolsó kettő flag.
ehhez kell egy levél tábla, ahol a levelek szövege/tárgya/stb. található, mindegyik levél egyszer. ez a legrugalmasabb megoldás, mert támogatja a sok címzettes üzenetküldést, mindenkinek tudsz készíteni sok funkcióval rendelkező postaládát a kapcsoló tábla bővítésével (pl. ilyeneket hogy mikor nézte meg a levelet, kukába rakta-e vagy törölte, stb.) ugyanakkor minimálisra csökkenti a redundanciát. -
Protezis
őstag
De ebben az esetben is el kell tarolnom a kapcsolotablaban, hogy a felado torolte -e, illetve a cimzett torolte -e. Teljesen hasonloan a megnezett mezobol is ketto kell - bar ez talan felesleges, a felado ugyis megnezte.
(Ugyanis mind a kuldott, mind a fogadott uzeneteket meg akarom jeleniteni egy adott felhasznalonal.)
Jol gondolom, vagy valamit benezek?
[Szerkesztve] -
föccer
nagyúr
Üdv.
Lenne 2 kérdésem.
1: hogyan tudok csak olvasási jogokkal rendelkező felhasználót létrehozni (gondolok itt a select-re). Itt:
[link] próbáltam utánna nézni, csak nem nagyon tudtam kihámozni, hogy nekem mire van szükségem
2: Egy adatbázisból lekérdezek néhány infót. Egyesével töltögetem ki a szükséges táblázatot, viszont az adatbázisból vett adatok nem azok, ami nekem kell, hanem valami visszatérési érték. Ez miért van, illetve hogyan lehetne tenni ellene
Neve: Resource id #8
Irányítószáma: Resource id #9
Lakhelye: Resource id #10
Címe: Resource id #11
E-mail címe: Resource id #12
Telefonszáma: Resource id #13
Az Terméket fogyasztja: Resource id #14
Sikere: Resource id #15
Kód, amivel kiiratom:
print(''<table border=\''1\''>\n'');
$sql = ''select NEV from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Neve:</td><td>$eredmeny</td>'');
$sql = ''select IRSZAM from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Irányítószáma:</td><td>$eredmeny</td>'');
$sql = ''select TELEPULES from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Lakhelye:</td><td>$eredmeny</td>'');
$sql = ''select CIM from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Címe:</td><td>$eredmeny</td>'');
$sql = ''select EMAIL from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>E-mail címe:</td><td>$eredmeny</td>'');
$sql = ''select FELEFON from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Telefonszáma:</td><td>$eredmeny</td>'');
$sql = ''select FOGYASZTJA from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Az Terméket fogyasztja:</td><td>$eredmeny</td>'');
$sql = ''select SIKER from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Sikere:</td><td>$eredmeny</td>'');
print (''</tr>'');
print(''</table>\n'');
Köszöm a segítségetÉpítésztechnikus. Építőmérnök.
-
cucka
addikt
válasz Protezis #393 üzenetére
a kapcsolótáblában eltárolhatod, hogy pl. berakta-e a kukába a levelet a júzer. amikor véglegesen törlődik, akkor meg törölheted azt a sort a kapcsolótáblából. ezen kívül törlésnél célszerű ellenőrizni, hogy az éppen törölt levélre hivatkozik-e még valamelyik sor a kapcsoló táblából, mert ha nem, akkor törölhető az is.
-
Protezis
őstag
Igen, azt hiszem egyre gondolunk.
Idokozben megegy problema:
uzenet tabla: id, szoveg, datum
felhasznalo_uzenet tabla: id, kuldo_id, cimzett_id, uzenet_id stb.
Uzenet kuldesekor letrejon egy bejegyzes az uzenet tablaban. Az uzenet.id auto_increment. Ezutan a felhasznalo_uzenet tablaban el kell tarolnom, hogy ki, kinek kuldte az adott uzenetet. Ehhez pedig szuksegem van az elobb eltarolt uzenet id-jere. Ezt hogy kaphatom meg? (nem szeretnek buveszkedni, mint pl. utolso uzenet id-je // lehet azt mar mas irta)
[Szerkesztve] -
Protezis
őstag
-
meone
tag
Sziasztok lenne egy nagyon alap kérdésem.
Feltetem az easyphp AMP csomagot és nincs meg adava benne a mysql-hez root jelszó és felhasználónév a config fájl ban, és ezt szretném meg kérdezni hogy mit kell be írni bele, hogy tudjam normálisan használni mert addig nem tudok semmi féle mysqlconetet végrehajtani.
Tudod hogy alap kérdés de a beállítás hoz nem nagyon értek és elrontani meg nem nagyon akarom. Köszi előre is.Elnézést kérek mindenkitől a helyes írásom ért :)
Új hozzászólás Aktív témák
- Bontatlan Seagate & Western Digital HDD-k 3TB - 12TB -ig - Számla + Garancia, Ár alatt! BeszámítOK!
- DJI Mini 4 pro FMC drón - 3 akku, RC2 táv, 2 táska, Filterek, 2025. decemberig garancia, DJI Care
- HP EliteBook 840 G6 i5-8365U 16GB RAM 256GB SSD világító MAGYAR billentyűzet
- Eizo Flexscan EV2450 IPS HDMI 2Év Garanciával MONITORCENTER
- 4070 Ti Aorus Master //KERESEM!!//