2012-12-24 2 views
6

PHP를 사용하여 하나 이상의 MySQL 테이블을 만들려고하는데 오류가 발생하고 잘못된 정보를 분류 할 수 없습니다.PHP를 사용하여 여러 MySQL 테이블 만들기

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); 

게다가 MySQL의 연결에 대해 걱정하지 마십시오. 올바르게 DB에 연결하고 테스트를 마쳤습니다. 확실히 구문에 문제가 있습니다.

SQL 구문에 오류가 있습니다. 사용할 올바른 구문 MySQL 서버 버전에 해당하는 설명서를 확인 근처 'NOT이 second_table (user_id INT

+1

[** 새 코드 **에서 mysql_ * 함수를 사용하지 마십시오 (http://bit.ly/phpmsql). 더 이상 유지 관리되지 않으며 공식적으로 사용되지 않습니다 (https://wiki.php.net/rfc/mysql_deprecation). [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 튜토리얼입니다] (http://j.mp/PoWehJ). – Neal

+0

기술적 차이점을 제외하면 PDO는 작업하기가 훨씬 쉽습니다. –

+3

투표 해 주셔서 감사합니다. 그러나 CMS가 작동 중이면 mysql_ * 기능을 지원합니다. 나는 왜 여기 사람들이 머리에 쓸 일이 없어도 투표가 아주 좋아하는 이유를 모르겠다. –

답변

4

당신은 mysql_query와 세미콜론으로 구분 된 쿼리를 사용하여,이 기능은 하나 개의 쿼리를 허용 할 수있는 경우 테이블 만들기 ! 한 번에

당신은 별도로 문을 실행해야합니다

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()); 

또는 더 나은, mysqli_multi_query 사용 - 당신이해야 의미 mysqli으로 전환하십시오.

+0

mysql 함수는 어떻게 작동합니까? –

+0

두 개의 CREATE TABLE 쿼리를 분리하고 mysql_query를 사용하여 쿼리를 하나씩 실행하십시오.'split (";", $ query)'을 시도하지 마십시오. –

2

그냥 오류 메시지가 말하는 것을하십시오.

DO WHAT HE SAY!

mysql_*하지만 please, don't use mysql_* functions in new code 한 번에 쿼리를 실행할 수 있습니다. 그들은 더 이상 유지되지 않습니다 and are officially deprecated. red box을 참조 하시겠습니까? prepared statements에 대해 자세히 알아보고 PDO 또는 MySQLi-this article을 사용하면 어떤 결정을 내리는 데 도움이됩니다. PDO를 선택하면 here is a good tutorial입니다.

+0

내가 사용하고있는 cms는 불행히도 mysql_ * 함수 만 지원합니다. –

+2

@ backTangent ok .... 그렇다면 CMS를 변경하는 것이 좋습니다.하지만 어쨌든. 당신은 mysql_ *로 한 번에 하나의 쿼리 만 할 수있다. – Neal

+0

나는 프리랜서이다. –

관련 문제