Autor Zpráva
exoslav
Profil
Čau,
vytvářím si tabulky pro databázi, ale problém je v tom, že se mi vždy vytvoří pouze jedna (chtěl bych 3). Vytvářím je pomocí SQL příkazů v phpku, ale nevím, kde je chyba. Také se mi nevloží data alespoň do té jedné tabulky, která se mi vytvoří :/

Soubor s vytvořením tabulek:
    $dbh = new PDO("mysql:host=localhost", 'root', '');
    $create_db_movie = ("CREATE DATABASE IF NOT EXISTS `movie` COLLATE 'utf8_czech_ci';") or die("Nepodařilo se připojit k DB");
    $dbh->exec($create_db_movie);
    $dbh->exec("USE movie");

    $filmy = "CREATE TABLE `movie` (
        id int NOT NULL auto_increment,
        movie_name varchar( 255 ) NOT NULL,
        movie_type tinyint( 2 ) NOT NULL default 0,
        movie_year int( 4 ) NOT NULL default 0,
        movie_leaderactor int( 11 ) NOT NULL default 0,
        movie_director int( 11 ) NOT NULL default 0,
        PRIMARY KEY ( id ),
        KEY movie_type ( movie_type, movie_year)
        );";
    $dbh->exec($filmy) or die(mysql_error());

    $typyfilmu = "CREATE TABLE `movietype` (
        id int NOT NULL auto_increment,
        movietype_label varchar( 100 ) NOT NULL,
        PRIMARY KEY ( id)
        );";
    $dbh->exec($typyfilmu) or die(mysql_error());

    $lide = "CREATE TABLE `people` (
        id int NOT NULL auto_increment,
        people_fullname varchar( 255 ) NOT NULL,
        people_isactor tinyint( 1 ) NOT NULL default 0,
        people_isdirector tinyint( 1 ) NOT NULL default 0,
        PRIMARY KEY ( id )
        );";
    $dbh->exec($lide) or die(mysql_error());

Soubor pro nahrání dat do tabulek:
$dbh = new PDO("mysql:host=localhost;dbname=movie", 'root', '') or die(mysql_error());
$dbh->exec("USE movie");
$vlozit_do_TABmovie = "INSERT INTO movie (
    id, movie_name, movie_type, movie_year, movie_leaderactor, movie_director)
    VALUES 
        (1, 'Potomci lidí', 5, 2006, 1, 2),
        (2, 'Lord of the Rings', 5, 2001, 5, 6),
        (3, 'Fontána, Fantasy', 2, 2005, 4, 3)
    ;";
$dbh->exec($vlozit_do_TABmovie);

$typ = "INSERT INTO movietype (id, movietype_label)
    VALUES 
    (1, 'Sci-Fi'),
    (2, 'Drama'),
    (3, 'Dobrodružný'),
    (4, 'Válečný'),
    (5, 'Komedie'),
    (6, 'Horror'),
    (7, 'Akční'),
    (8, 'Animovaný')
;";
$dbh->exec($typ);

$lide = "INSERT INTO people (id, people_fullname,people_isactor, people_isdirector)
    VALUES 
    (1, 'Jim Carry', 1, 0),
    (2, 'Clive Owen'),
    (3, 'Huge Jackman', 0, 1),
    (4, 'Rachel Weisz', 1, 0)
";
$dbh->exec($lide);

Každá rada bude dobrá, děkuji moc :)
Alphard
Profil
Tu hnusnou konstrukci or die dejte pryč. mysql_error() je stejně k ničemu, protože pracujete s PDO, to má vlastní metody pro zjišťování chyb – PDO::errorInfo.

Jinak v tom ale nevidím problém, dáváte sem kód hezky otestovatelný, takže ta první část mi vytvoří všechny 3 tabulky. Neexistuje vám už movie? Na tom by to spadlo (kvůli tomu or die).
exoslav
Profil
Ano děkuji, nyní se vytvoří všechny 3 tabulky. Nyní mám ale problém s vkládáním dat. Data se vloží pouze do prvních dvou tabulek, poslední zůstane prázdá (nebo také jinak, seznam herců se nevloží). No, podívám se na to ještě zítra, teď už jdu spát. Děkuji Vám za pomoc.


Tak už vím, byla to moje nepozornost, nevyplnil jsem všechny údaje u Cliva Owena :) nicméně ještě mám několik otázek, na které bych se chtěl zeptat. Zítra bych napsal.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: