Autor Zpráva
dumper
Profil
Zdravím, jsem začátečník s php, učím se pomocí knihy takže všechno dělám tak jak je tam popsáno. Potřeboval bych poradit, když si chci pomocí php vytvořit databázi a tabulky tak mi to vždy vytvoří pouze jednu tabulku a zbylý 2 to prostě nevytvoří, jak kdybych php za první tabulkou ukončil. Předem děkuji za odpověď.
<?php

$db = mysql_connect('localhost', 'lukas', 'lukas') or die ('Nelze se připojit');

$dotaz = 'CREATE DATABASE IF NOT EXISTS moviesite';
$vysledky = mysql_query($dotaz, $db) or  (mysql_error($db));

mysql_select_db('moviesite' , $db)or  (mysql_error($db));
$dotaz ='CREATE TABLE movie(
    movie_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    movie_name VARCHAR(255) NOT NULL,
    movie_type TINYINT NOT NULL,
    movie_year SMALLINT UNSIGNED NOT NULL DEFAULT 0,
    movie_leadactor INTEGER UNSIGNED NOT NULL DEFAULT 0,
    movie_director INTEGER UNSIGNED NOT NULL DEFAULT 0,
    
    PRIMARY KEY (movie_id),
    KEY movie_type (movie_type, movie_year)
)
ENGINE=MyISAM';
$vysledky = mysql_query($dotaz, $db) or  (mysql_error($db));

$dotaz = 'CREATE TABLE movietype (
    movietype_id UNSIGNED INT NOT NULL AUTO_INCREMENT,
    movietype_label    VARCHAR(100) NOT NULL,
    
    PRIMARY KEY (movietype_id)
)
ENGINE=MyISAM';
$vysledky = mysql_query($dotaz, $db) or  (mysql_error($db));

$dotaz = 'CREATE TABLE people (
    people_id UNSIGNED INT NOT NULL AUTO_INCREMENT,
    people_fullname VARCHAR(255) NOT NULL,
    people_isactor TINYINT(1) UNSIGNET NOT NULL DEFAULT 0,
    peopleisdirector TINYINT(1) UNSIGNET NOT NULL DEFAULT 0,
    
    PRYMARY KEY (people_id)
)
ENGINE=MyISAM';
$vysledky = mysql_query($dotaz, $db) or  (mysql_error($db));

echo 'Databáze byla úspěšně vytvořena!';
?>
Fisir
Profil
Reaguji na dumpera:
jsem začátečník s php
Výborně, takže už ze začátku nepoužívej mysql_*, ale nejsnadněji jejich modernější náhražku MySQLi (případně PDO, které je relativně nezávislé na databázovém systému). O co jde a jak to používat (či jak s tím nahradit mysql_* funkce) popisuji tady.

Vypisuje to nějakou chybovou hlášku? Provedou se ty dotazy, když je spustíš přímo v phpMyAdminu/Admineru?

Minimálně ve třetím SQL je chyba: PRYMARY KEY, špatné I.
Zechy
Profil
Fisir:
Minimálně ve třetím SQL je chyba: PRYMARY KEY, špatné I.
Myslím, že ještě dřív by to skončilo na USINGNET než na PRYMARY.

Asi by to nejdřív chtělo opravit překlepy.
bestik_63
Profil
Zkus si vytisknout po každém dotazu výsledek mysql_error($db) ať víš kde je chyba, pak se to daleko lépe dešifruje, kde je chyba. Možná to není problém, ale asi ti po připojení k DB chybí výběr databáze
$link = mysql_connect("localhost", "mysql_user", "mysql_password");

mysql_select_db("nonexistentdb", $link);
dumper
Profil
dumper:
Všechny překlepy mám opravený (způsobený asi už tím že půl dne čumím jen do kódu a všechno už přehlížím) a i přesto je to stále to stejné. Vyhodí to pouze chybu s tím že MySql už je zastaralý a že mám přejít na něco jiného jak už zmiňoval Fisir, prozatím zůstanu u MySql protože s ním pracuje kniha kterou používám. Učím se to podle učebnice Vytváříme webové aplikace od Computer Press. Zkusím mrknout po už napsaných kódech přímo k této knize.


bestik_63:
připojení asi nebude problém, 1 tabulku mi to vytvoří a v knize mám popsanou tuhle část kódu mysql_select_db('moviesite' , $db)or (mysql_error($db)); tak že mi určuje že databáze moviesite bude pracovní. chápu to tak že je to něco co určuje tabulkám do které databáze se mají vytvořit.
dumper
Profil
Problém vyřešen
Problém byl v
- původně: $dotaz ='CREATE TABLE movietype ( movietype_id UNSIGNED INT NOT NULL AUTO_INCREMENT, ....
- správně: $dotaz ='CREATE TABLE movietype ( movietype_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, ....

Děkuji za rady :)
Fisir
Profil
Reaguji na dumpera:
zůstanu u MySql
Chtěl bych dodat, že v PHP 7 (následuje po PHP 5) bude toto rozšíření odstraněno. Bylo by lepší začít už s nějakým perspektivnějším. Zrovna přechod na MySQLi není tak složitý.
dumper
Profil
Fisir:
Bylo by lepší začít už s nějakým perspektivnějším
Ano, něco jsem si o tom četl, prozatím se to učím a jak už jsem zmiňoval, učím se to podle knihy ve které se používá MySQL,, takže když mám někde chybu tak si to v knize projedu znova a najdu ji. Zjistím co mám špatně a na co si mám dávat bacha. Až budu trochu zaběhle s prací s databází a php tak každopádně přejdu na MySQLi. Tady ten problém co sem popisoval byl způsoben chybou i v knize, stáhl sem si v pdf chyby které v ní jsou a mohu pokračovat. :)

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: