Mysql tábla kezelése
Sziasztok
Szeretnék készíteni egy olyan függvényt, amely lehetővé teszi számomra, hogy bármilyen táblába tudjak beszúrni. Azt hiszem egy olyan függvény lenne a megoldás, ami paraméterben kapja a tábla nevét, és a beszúrandó adatokat.
Van arra lehetőség, hogy a függvénynek különböző számú paramétereket adjunk meg? Esetleg van valami egyszerűbb megoldás?
Köszönöm:
Peter71
■ Szeretnék készíteni egy olyan függvényt, amely lehetővé teszi számomra, hogy bármilyen táblába tudjak beszúrni. Azt hiszem egy olyan függvény lenne a megoldás, ami paraméterben kapja a tábla nevét, és a beszúrandó adatokat.
Van arra lehetőség, hogy a függvénynek különböző számú paramétereket adjunk meg? Esetleg van valami egyszerűbb megoldás?
Köszönöm:
Peter71
Olvasgattam, gondolkoztam.
Azt azonban nem tudom, hogy ha a POST-ban elküldött adatok nem olyan sorrendben vannak mint a táblában, akkor hogyan rakom sorrendbe őket.
További gondolkodás után, azt sem tudom, hogy a beszúrásnál, hogy adom meg a mező neveket.
tipp
Ezután nincs más dolgod, mint a tömb kulcsait megfeleltetni az oszlopneveknek
és így a sorrend is lényegtelen. Csak annyi a dolgod, hogy egy foreach-el
végigszaladsz a tömbön és dinamikusan összerakod a query string-et.
Szerk: a foreach nem is fontos most nézem a saját kódomban sem azzal van... :)
Hacsak nem akarsz egy post process-t alkalmazni (pl. escape-lni) akkor ennyivel is megoldható:
mit akarsz POST-ban küldeni?
Egyébként az űrlap elemeit tömbként is el tudod küldeni. Ha a tábládban az oszlopok más sorrendben szerepelnek, mint ahogy szeretnéd bekérni az adatokat a formoddal, akkor csinálhatod például így:
Értsd:
MySQL táblában a sorrend:
- email
- name
- password
Formban a sorrend:
- name
- email
- password
Az oszlopok nevét pedig egy explode-dal ('_' karakter szerint) kinyerheted a mezők nevéből.
Köszönöm, a segítséget. Ahogy
Ahogy látom a megoldások jók lehetnek, de én olyat szerettem volna, amit általánosan minden táblánál fel tudok használni. Ehhez az oszlopok neveit az adatbázisból kellene kiolvasnom.
Valami olyan elképzelésem van, hogy egy függvény ír a felhasználók és a termékek táblába is. Ezt a megoldást a későbbiekben máshol is föl tudnám használni. Így nem adhatok meg oszlop neveket. Keresgéltem, és találtam valamit (information_schema), de ez idáig nem tudtam belőle számomra használhatót kihámozni.
RTFM, persze angolul van, és
RTFM, he ez az amit a google
Ezt olvastam, , de a megadott oldal nem működik. Kerestem a , de itt is kevés eredménnyel.
Ezek után, tényleg RTFM nekem.
Ugyan jelen pillanatban épp
Meg van a megoldás. SELECT
WHERE table_name = 'tbl_name'
[AND table_schema = 'db_name']
Most már meg tudom szerezni az oszlop neveket, így megpróbálhatom megírni a függvényt. Már csak azt kell kitalálnom, hogy hogyan ellenőrizhetem a bevitel és az oszlopok sorrendjét.
Köszönöm:
Peter71
Milyen sorrend?
`egy` INT NOT NULL ,
`ketto` INT NOT NULL ,
`harom` INT NOT NULL
) ENGINE = InnoDB;
INSERT INTO `test`.`sorrend` (`egy`, `ketto`, `harom`) VALUES ('1', '2', '3');
INSERT INTO `test`.`sorrend` (`harom`, `egy`, `ketto`) VALUES ('3', '1', '2');
Mindkét esetben ugyanaz a sor kerül bele a táblába.
ORM
ORM-re rákereshetsz, sok helyen le van írva a lényege. Pl. Propel oldalán is.
Nem sok tábláról van szó,
A sorrend pedig onnan jön, hogy szeretnék az admin felületet úgy elkészíteni, hogy ha az űrlap más sorrendben van mint a táblába használt oszlopok, akkor is jó helyre illessze be az adatokat.
Tehát, van egy űrlap név és e-mail beviteli mezővel, és ha a táblában fordítva van az oszlopok sorrendje akkor is használható legyen a függvény. Paraméterként megkapja a tábla nevét és az adatokat, a fent említett select-el meg nézem milyen oszlopok vannak és a megkapott beviteli mező értékeket a helyére írja be. Nem örülnék neki, ha a nevet és az e-mail-t megcserélné.
Az ORM-et megnézem.
Köszönöm:
Peter71