2012-12-24 18 views
6

Próbuję utworzyć więcej niż jeden tabel MySQL za pomocą php, ale daje błędy i nie mogę rozwiązać, co jest z nim nie tak.Tworzenie wielu tabel MySQL przy użyciu PHP

kod PHP:

$sql = ' CREATE TABLE IF NOT EXISTS `mod_reminder_entries` 
    ( 
    `id`   INT(10) NOT NULL auto_increment, 
    `user_id`  INT(10) NOT NULL, 
    `entry_name` VARCHAR(255) NOT NULL, 
    `entry_value` INT(10) NOT NULL, 
    PRIMARY KEY (`id`), 
    FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
); 

CREATE TABLE IF NOT EXISTS `second_table` 
    ( 
    `user_id`  INT(10) NOT NULL, 
    `fieldstotal` INT(10) NOT NULL, 
    FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
); '; 

    mysql_query($sql); 

To daje błąd, oprócz nie martwić o połączenia mysql. Poprawnie łączę się z DB i testowałem to, to zdecydowanie coś złego w składni.

Masz błąd w swojej składni SQL; sprawdzić podręcznika, który odpowiada twojej wersji serwera MySQL dla prawego składnię używać blisko „CREATE TABLE IF NOT EXISTS second_table (user_id INT

+1

[** Proszę, nie używaj funkcji 'mysql_ *' w nowym kodzie **] (http://bit.ly/phpmsql). Nie są już utrzymywane [i są oficjalnie przestarzałe] (https://wiki.php.net/rfc/mysql_deprecation). Zobacz [** czerwone pudełko **] (http://j.mp/Te9zIL)? Dowiedz się więcej o [* przygotowanych wyciągach *] (http://j.mp/T9hLWi) i użyj [PDO] (http://php.net/pdo) lub [MySQLi] (http://php.net/ mysqli) - [ten artykuł] (http://j.mp/QEx8IB) pomoże ci zdecydować, który. Jeśli wybierzesz PDO, [tutaj jest dobry samouczek] (http://j.mp/PoWehJ). – Neal

+0

Pomijając różnice techniczne, PDO jest znacznie łatwiejsze w użyciu. –

+3

Dzięki za głosowanie w dół, ale CMS, który pracuję obsługuje funkcje mysql_ *. Nie rozumiem, dlaczego ludzie tutaj tak lubią głosować w dół, kiedy nie mają nawet czego używać w głowach. –

Odpowiedz

4

Nie można używać średnik rozdzielone zapytań ze mysql_query, funkcja ta pozwala tylko na jedno zapytanie ! naraz

musisz wykonać swoje wypowiedzi oddzielnie:

mysql_query(" 
    CREATE TABLE IF NOT EXISTS `mod_reminder_entries` (
     `id` INT(10) NOT NULL AUTO_INCREMENT, 
     `user_id` INT(10) NOT NULL, 
     `entry_name` VARCHAR(255) NOT NULL, 
     `entry_value` INT(10) NOT NULL, 
     PRIMARY KEY (`id`), 
     FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
    ) 
") or die(mysql_error()); 

mysql_query(" 
CREATE TABLE IF NOT EXISTS `second_table` (
    `user_id` INT(10) NOT NULL, 
    `fieldstotal` INT(10) NOT NULL, 
    FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
) 
") or die(mysql_error()); 

lub lepiej wykorzystywać mysqli_multi_query - co oznacza, że ​​muszą przełącz na mysqli.

+0

jak to by działało z funkcjami mysql? –

+0

Rozdziel dwa zapytania "CREATE TABLE" i wykonaj je jeden po drugim, używając mysql_query.Nie próbuj wykonywać "split (", ", $ query)". –

2

Po prostu wykonaj to, co mówi komunikat o błędzie.

DO WHAT HE SAY!

można wykonać tylko jedenzapytanie w czasie z mysql_* ale please, don't use mysql_* functions in new code. Nie są już przechowywane and are officially deprecated. Zobacz red box? Dowiedz się więcej o numerze prepared statements i użyj opcji PDO lub MySQLi - this article, które pomogą Ci zdecydować, które. Jeśli wybierzesz opcję PDO, here is a good tutorial.

+0

Używanych cms niestety obsługuje tylko funkcje mysql_ *. –

+2

@backTangent ok .... wtedy radzę zmienić CMS, ale tak czy inaczej. można zrobić tylko jedno zapytanie w czasie z '*' – Neal

+0

mysql_ nie mogę, jestem wolny zawód :) –

Powiązane problemy