ugrás a tartalomhoz

MySQL tábla létrehozása PHP-ban

Kezdo_2 · 2013. Már. 30. (Szo), 15.19
Szóval mióta csak a programozást tanulgatom mindig phpmyadmin-ban készítettem el az adatbázis tábláit, de most arra jutottam, hogy elegem van a sok fölösleges kattintásból és inkább php-ben készítem el a táblákat.
Lenne ezzel kapcsolatban kérdésem. Szóval, ha egy táblának datetime formátumot szeretnék adni, akkor is mögé kell írni a default NULL-t? Valamint ha egy auto_increment és primary key-t szeretnék adni a mezőnek azt hogy kell jelezni? Jelezni kell hogy magyar utf-8-at szeretnék?
Eddig itt tartok:
<?php 
mysql_query("CREATE TABLE 'tablanev' (
'1mezo' int(11) default NULL (?),
'2mezo' varchar(10) default NULL,
'3mezo' dateime default NULL (?)
)ENGINE=MyISAM DEFAULT CHARSET=utf-8 (?);
");
?>
Elnézést ha kicsit fárasztó a kérdés, de mint a nevem is mutatja kezdő vagyok.
 
1

Amikor PHPMyAdminban

Hidvégi Gábor · 2013. Már. 30. (Szo), 16.01
Amikor PHPMyAdminban bármilyen műveletet végzel, mindig kiírja a lefuttatott SQL-t, ez történik a tábla létrehozásakor is. Ezt másold le, és készíts hozzá függvényt, amivel paraméterezni tudod.

Egyébként szerintem egyszerűbb PHPMyAdminnal csinálni ezt a feladatot, mert általában nincs rá olyan sokszor szükség, egyszerűen használható a felülete, van benne hibaellenőrzés.
2

Egyébként szerintem

Poetro · 2013. Már. 30. (Szo), 20.35
Egyébként szerintem egyszerűbb PHPMyAdminnal csinálni ezt a feladatot, mert általában nincs rá olyan sokszor szükség

Szerintem, pedig jobb, ha megtanulja, hogyan kell kódból megoldani. Először is, tudja automatizálni az egész folyamatot, ha kell akár mikor le tudja futtatni, például amikor a fejlesztői könyezetből élesbe megy. Tud verziót követni benne. Azaz az egyik szerveren lehet a szoftver 1.0-s, míg a másikon egy 2.0-s változata, és az 1.0-t könnyű lesz frissíteni a következő verzióra csupán kód lefuttatásával, nem kell adatokat keresztbe kasul migrálni. Főleg ha azok már változtak valamelyik környezetben.
van benne hibaellenőrzés

A MySQL kliens is ad vissza hibaüzenetet, csak ki kell íratni.
3

Szintén a napokban kezdtem én

asam9 · 2013. Már. 30. (Szo), 21.39
Szintén a napokban kezdtem én is gondolkodni azon, hogy talán PHP-ból lenne érdemes létrehozni a táblákat. Nem vagyok nagy PHP/MySql-es és bennem is merültek fel kérdések ezzel kapcsolatban, remélem nem gond, ha nem csinálok neki új témát, mert idevág…
CREATE TABLE IF NOT EXISTS `house` (
  `id` smallint(6) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
A fenti kódban látható, hogy a mezők megadása után hogyan lehet létrehozni az elsődleges kulcsot – PRIMARY KEY (mezo_neve).
Illetve az IF NOT EXISTS is hasznos lehet a CREATE TABLE után, mert nem dob figyelmeztetést, ha a tábla már létezik.

…Viszont nem vagyok biztos abban, hogy jó megoldás, ha mindig lefutattom először a táblákat létrehozó függvényét az adott modulnak… Mi a véleményetek erről?
4

IF NOT EXISTS

Alex Black · 2013. Már. 31. (V), 03.29
Üdv mindenkinek,szerintem semmi baj nincs azzal hogy lefut a tábla létrehozó függvény.
Az IF NOT EXISTS ott van,tehát a parancs végül is amit kiadtál a MySQL-nek nem teljesül,mert ha a táblád létezik, úgy sem fut végig.Manapság kezdtem el olvasgatni több adatbázis szerkesztéssel kapcsolatos érdekes PDF tanulmányt,melyeket így innen-onnan találtam,és szembe találkoztam az "Előkészített lekérdezéssel" én hasznosnak tartom,bár az MySQLi-s,nektek erről az Előkészített lekérdezésről mi a véleményetek,vagy tapasztalatotok? Nekem fekszik ez a dolog ,de kíváncsi vagyok a ti véleményetekre is.
5

Nem egészen

Pepita · 2013. Ápr. 1. (H), 21.41
szerintem semmi baj nincs azzal hogy lefut a tábla létrehozó függvény
Az nem baj, hogy esetleg minden oldalkéréskor megpróbál a programod létrehozni akár 20-50 adattáblát?! Elég súlyos terhelést tudsz akasztani így a szerverre! Jobb, ha különálló adatbázis-telepítő szkriptet írsz, ami végigtelepíti a teljes db-t, és vagy kézzel indítod, vagy csak akkor, ha olyan kivétel (hibaüzi) jön a szervertől, amiből felismerhető a táblák hiánya.

Nekem simán szokott lenni 20 adattáblám, ellenben egy-egy oldal legenerálásához nemigen kell 6-8-nál több query. Ehhez adnál hozzá 20 IF NOT EXISTS-et? Rossz ötlet.

Kifejtenéd részletesebben, mit értesz "Előkészített lekérdezés" alatt? Ha az amire gondolok, akkor nem csak "MySQLi-s".
6

Üdv

Alex Black · 2013. Ápr. 1. (H), 22.05
Én arra az előkészített lekérdezésre gondolok amit "Lekérdezési terv"-nek is lehetne mondani. 1.Előkészítés(prepare),2.Paraméterek hozzárendelése a tervünkhöz(bind_param)3.SQL futtatása (execute). Változó hozzárendelés az eredményhez (bind_result)és végül a fetch az eredmény beolvasása.Én erre gondolok.
Nem vagyok még nagy guru a MySQL-ben,és ezért sem szeretnék okoskodni.Jó ha valaki kijavítja az adott dologról az álláspontomat.Én erről olvastam kipróbáltam,foglalkozok vele,de nem zárja ki azt hogy csak mysqli-s.
7

Lekérdezési terv

Pepita · 2013. Ápr. 1. (H), 22.59
Ez mindig hasznos. :)

Izgalmas szitu, amikor bizonyos programfutási feltételek alapján kell "levegőben" összedobni egy SQL-t, akkor (is) lehet ez igen hasznos. Olvass minél több ilyet (ha jó doksi), ha belinkelnéd, hátha mondana valaki bővebb véleményt. Amit pedig olvastál, próbáld alkalmazni másutt is (nem csak MySQLi).
8

Lekérdezés

Alex Black · 2013. Ápr. 1. (H), 23.12
Üdv :)
Hát én ebből néztem,
http://primeranks.net/yeti/University/III%20ev/II%20felev/Webtechnologiak/Eloadasok/14_adatbazis.pdf
meg innen onnan,a google a barátom,ott keresgélek mindenféle mysql+php doksik után,meg hát a manualok,meg van könyvem is :)
9

Köszi szépen a válaszokat, a

asam9 · 2013. Ápr. 1. (H), 23.28
Köszi szépen a válaszokat, a másik ötlet a telepítő volt, akkor az lesz.
10

esetleg használj ORM lib-et

spoty · 2013. Ápr. 2. (K), 07.26