Hirdetés
- Samsung Galaxy A56 - megbízható középszerűség
- Telekom mobilszolgáltatások
- Yettel topik
- Szívós, szép és kitartó az új OnePlus óra
- Fotók, videók mobillal
- Prohardver app (nem hivatalos)
- iOS alkalmazások
- Fittyet hány a pesti napfényre a Honor 600
- Samsung Galaxy A57 - kecses test, lusta lélek
- Vivo X300 Ultra - tárcsázz, ha van rá keret!
Új hozzászólás Aktív témák
-
bpx
őstag
na, jó hogy kérdezed, mert nem hibátlan
a +5 -2 az működik a többi napon is (kivéve 1-et)
azért pont ennyi, mert a hét első napja a DAYOFWEEK szerint az vasárnap, és korrigálni kella vasárnappal viszont pont emiatt gond van...
de most rátaláltam a csodás WEEKDAY() függvényre, aminél nem kell korrigálni, és a hét minden napján jó:
select date(date_sub(now(), INTERVAL WEEKDAY(now())+7 DAY)), date(date_sub(now(), INTERVAL WEEKDAY(now()) DAY));
-
bpx
őstag
mysql rejtelmeit nem igazán ismerem, de ennyit sikerült összehozni

mysql> select date(date_sub(now(), INTERVAL DAYOFWEEK(now())+5 DAY)), date(date_sub(now(), INTERVAL DAYOFWEEK(now())-2 DAY));
+---------------------------------------------------------+---------------------------------------------------------+
| date(date_sub(now(), INTERVAL DAYOFWEEK(now())+5 DAY)) | date(date_sub(now(), INTERVAL DAYOFWEEK(now())-2 DAY)) |
+---------------------------------------------------------+---------------------------------------------------------+
| 2013-04-15 | 2013-04-22 |
+---------------------------------------------------------+---------------------------------------------------------+"WHERE mezo1 > X-1. hét első napja AND mezo2 < X-1. hét utolsó napja."
nem a teljes hét kell?
mezo1 >= X-1. hét első napja AND mezo1 < X. hét első napja -
zolynet
veterán
Szia!
select extract(week from mezőnév) from táblanév
itt van még egy okosság, hátha segít: interval
ezt a részt nem teljesen értem:
De szükségem lenne arra is, hogy ebből a 15. hét től ig-et is visszakpjam. pl 2013.04.15 00:00:00 és 2013.04.21. 24:00:00 ---> csináld meg egy
datum >='2013-04-15' and datum<'2013-04-22' /esetleg between-el/ -
Ispy
nagyúr
Sajnos én nem értek mysql-hez, csak mssql-hez, ott így van:
SELECT @table_exists=1
FROM information_schema.tables
WHERE table_schema = 'valami'
AND table_name = 'MY_TABLE'
IF @table_exists = 1
BEGIN
SELECT * FROM MY_TABLE
END
ELSE
BEGIN
CREATE TABLE MY_TABLE
ENDHa nem megy, akkor menjél át a prog.hu-ra, ott biztosan segítenek.
-
Ablakos
addikt
Úgy értettem a kérdést, hogy az első táblából, minden rekordra szükséged van.
Én azt írtam: Az eredményhalmaz mérete legalább első tábla mérete lesz (feltéve, hogy valamelyik táblában nincs dupla a joinolt ID oszlopban). Ahol talál egyezőséget, ott a második tábla d oszlopát teszi le, ahol nincs egyezőség (null a rowid) ott 0 lesz.
Milyen környezetben kell a script?
-
pittbaba
aktív tag
-
martonx
veterán
2013-ban nem illik ilyen old school join-okat csinálni. Írd át modern sql szintaktikára:
from egytabla t1
join kettotabla t2 on t1.id = t2.id
join haromtabla t3 on t1.id = t3.idA hiba pedig elég egyértelmű. A három tábla descartes szorzata túl sok sort adna vissza, és (shared hosting környezetben jellemzően direkt) le van korlátozva a mysql memória használata, join-ok mérete.
Ezt elkerülni úgy tudod, hogy vagy megpróbálod átkonfigurálni a mysql-t, ha nem vagy hosting környezetben akkor ez menni fog.
Vagy alselecteket használsz, és megpróbálod csökkenteni a join-olt táblák visszaadott sorainak számát. Erre jó lehet akár egy szigorúbb feltételes join is. Az is lehet, hogy az id kapcsolat nem jó, és ez miatt többszörőződik meg indokolatlanul a join.
Vagy átmész egy rendes hosting-hoz, ahol nincs ilyen korlátozás. -
Sk8erPeter
nagyúr
"egyébként az exec-et már korábban átírtam prepare-re, de tény, hogy attól a paramétereket ugyanúgy beleírtam a query-be"
Akkor esélyes, hogy ez volt a gond egyik okozója.
OK, majd írd meg, mi lett a vége.
Szerk.:
"Kivételt nem kezeltem, de otthon majd átírom ilyenre, remélem megoldódik ilyen módszerrel"
Hát nem a kivételkezeléstől fog megoldódni, az biztos.
A kivételkezelés csak egy szép módja a hibakezelésnek, ennyi. Attól még önmagában nem megoldott az adatok helyes feltöltése, csak így könnyű elkapni az eldobott kivételt, ha valahol hiba keletkezett. -
Sk8erPeter
nagyúr
"Más" utáni részre reagálva:
A PDO exec() függvényét használod itt? Vagy ez saját wrapper osztály?
Ha a PDO-é, akkor azonnal felejtsd el, hogy exec() metódus használatával közvetlenül beleraksz felhasználótól érkező adatot. Meg nem ártana, ha kivételeket kezelnél.
Nem is értem, pont az a lényege a PDO-nak, hogy szépen lehet vele az adatokat kezelni, prepared statementeket lehet vele használni, így escape-elgetni sem kell a karaktereket, épp ez az egyik legjobb benne, de a másik pedig az előkészített query által megvalósítható szép kód - nincs szükség okádék string-összefűzögetésre, mint - bocs - a Te kódodban.
Tele von Zsinór kolléga a PHP topicban belinkelte a saját cikkét a témában, ami elég jól összefoglalja a dolgot:
http://maerlyn.eu/2011/12/03/pdo.htmlTehát
$db->exec("INSERT INTO offers (offer_id,description,images) VALUES ('$provider_id','$htmlcontent', '".$_FILES['uploaded_image']['name']."');");
FELEJTŐS, HELYETTE:$dbh = NULL;
try {
// felhasználónév, jelszónál saját adat behelyettesítendő
$dbh = new PDO("mysql:host=localhost;dbname=test", "root", "root", array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;',
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
// ..............
$sth = $dbh->prepare('INSERT INTO offers (offer_id,description,images) VALUES (:offer_id, :description, :images)');
$sth->bindParam(':offer_id', $provider_id, PDO::PARAM_INT);
$sth->bindParam(':description', $htmlcontent, PDO::PARAM_STR);
$sth->bindParam(':images', $_FILES['uploaded_image']['name'], PDO::PARAM_STR);
$sth->execute();
echo 'Úgy tűnik, minden OK.';
}
catch (PDOException $err) {
echo 'Hiba: ', $e->getMessage();
}
catch (Exception $e) {
echo 'Másik hiba: ', $e->getMessage();
}Itt feltételeztem, hogy az offer_id egy INT.
Meg természetesen a kivételeket inkább naplózni kéne, és felhasználóbarát üzeneteket kiírni.Ja, és a fentivel nagy eséllyel kerülhető el az általad említett probléma.
Legalábbis remélem. Majd írd meg, mire jutottál. -
martonx
veterán
Nem értelek. Minden adott a problémád megoldásához, a megoldásokat leírtam/leírtuk, de te nem csinálod meg. Mit vársz tőlünk? Menjünk át hozzád, és helyetted rakjunk fel egy Toad for Mysql-t, majd rakjuk fel az sql dumpot a lokális gépedre, és szépen nézegessük át veled az egészet? Majd magyarázzuk el, és simogassuk meg a buksidat?
-
martonx
veterán
"a gépemen xampp van csak" - ezek szerint saját gépen fut a mysql??? Ez esetben kérlek, a saját érdekedben tegyél fel egy Toad for MySql-t, a phpmyadmin-t meg hagyd meg a vérpistikéknek, vagy azoknak a szerencsétleneknek, akiknek nincs elérésük a hosting környezet mysql-éhez, mégis éles környezetben kell mókolniuk az sql-ben.
-
Lortech
addikt
Ha 1 - több kapcsolat van a két tábla között, akkor a kapcsoláshoz nem kell több.
A child/detail táblában felveheted még foreign keynek a mezőt, tudsz constraintet is definiálni hozzá, amely megakadályozza, hogy a child táblában létrejöjjön rekord megfelelő parent/detail nélkül, illetve meghatározhatod, hogy mi történjen, ha a parent táblában módosul vagy törlődik az adott kulcsú rekord. Storage engine-től függ, hogy támogatja-e az FK-t, InnoDB támogatja csak.
Új hozzászólás Aktív témák
Hirdetés
- Új, Gamer félgép - MSI Z890 GAMING PLUS WIFI + Intel Ultra 7 265K + Corsair 2x16GB DDR5 6400MHz CL32
- ASUS Rog Ally Z1 Extreme, 2027.01.12-ig gyári garanciás, hálózati töltőjével, szilikon tokkal eladó!
- HP 250 G7,15.6",i5-1035G1,8GB DDR4,256GB SSD,WIN11
- Lenovo ThinkPad T480s,FHD,14",i5-7300U,8GB DDR4,256GB SSD,WIN11,TOUCH,jó akku
- Lenovo ThinkPad T480s,FHD,14,i5-7300U,8GB DDR4,256GB SSD,WIN11,TOUCH
- HP EliteBook 745 G6 14" Ryzen 5 pro 3500U, 16GB RAM, SSD, jó akku, számla, 6 hó gar
- LG UltraWide 34WQ500-B IPS Monitor! / 2560x1080 / 5ms / FreeSync
- HP EliteBook 840 G7 i5-10210U 8GB 256GB FHD 400nit 1 év garancia
- Apple iPhone 17 512GB Black Karcmentes állapot 100% akku (12 ciklus)
- GAMING PC! Ryzen 5700X / RTX 3070 / 32GB 3600MHz / SSD / 700w Gold!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest







