2012-12-24 65 views
6

Tôi đang cố gắng tạo nhiều hơn một bảng MySQL bằng cách sử dụng php nhưng nó cho lỗi và tôi không thể phân loại những gì là sai với nó.Tạo nhiều bảng MySQL bằng cách sử dụng PHP

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

Nó cung cấp cho các lỗi, bên cạnh đó đừng lo lắng về kết nối mysql. Tôi kết nối đúng với DB và tôi đã thử nghiệm nó, nó chắc chắn là một số điều sai với cú pháp.

Bạn có lỗi trong cú pháp SQL; kiểm tra hướng dẫn rằng tương ứng với phiên bản máy chủ MySQL của bạn cho đúng cú pháp để sử dụng gần 'CREATE TABLE IF NOT EXISTS second_table (user_id INT

+1

[** Vui lòng không sử dụng các hàm 'mysql_ *' trong mã mới **] (http://bit.ly/phpmsql). Chúng không còn được duy trì [và được chính thức ngừng sử dụng] (https://wiki.php.net/rfc/mysql_deprecation). Xem [** hộp màu đỏ **] (http://j.mp/Te9zIL)? Tìm hiểu về [* statement statements *] (http://j.mp/T9hLWi) thay vào đó, và sử dụng [PDO] (http://php.net/pdo) hoặc [MySQLi] (http://php.net/ mysqli) - [bài viết này] (http://j.mp/QEx8IB) sẽ giúp bạn quyết định cái nào. Nếu bạn chọn PDO, [đây là hướng dẫn tốt] (http://j.mp/PoWehJ). – Neal

+0

Sự khác biệt về mặt kỹ thuật, PDO dễ làm việc hơn nhiều. –

+3

Cảm ơn bạn đã bỏ phiếu, nhưng CMS tôi đang làm việc hỗ trợ các chức năng mysql_ *. Tôi không hiểu tại sao mọi người ở đây lại rất thích bỏ phiếu khi họ thậm chí không có vài thứ để sử dụng trong đầu. –

Trả lời

4

Bạn có thể không sử dụng các truy vấn chấm phẩy tách ra với mysql_query, chức năng này chỉ cho phép một truy vấn ! tại một thời điểm

bạn phải thực hiện báo cáo của bạn riêng:

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

Hoặc tốt hơn, sử dụng mysqli_multi_query - có nghĩa là bạn phải chuyển sang mysqli.

+0

làm cách nào nó hoạt động với các hàm mysql? –

+0

Tách hai truy vấn 'CREATE TABLE' và thực hiện từng câu một bằng cách sử dụng mysql_query.Đừng cố gắng thực hiện một 'tách ("; ", $ truy vấn)'. –

2

Chỉ cần làm những gì thông báo lỗi cho biết.

DO WHAT HE SAY!

Bạn chỉ có thể thực hiện một truy vấn tại một thời điểm với mysql_* nhưng please, don't use mysql_* functions in new code. Chúng không còn được duy trì and are officially deprecated. Xem red box? Thay vào đó, hãy tìm hiểu về prepared statements và sử dụng PDO hoặc MySQLi - this article sẽ giúp bạn quyết định điều nào. Nếu bạn chọn PDO, here is a good tutorial.

+0

Các cms tôi đang sử dụng, tiếc là chỉ hỗ trợ các chức năng mysql_ *. –

+2

@backTangent ok .... sau đó tôi sẽ khuyên thay đổi CMS, nhưng dù sao đi nữa. bạn chỉ có thể thực hiện một truy vấn tại một thời điểm với 'mysql_ *' – Neal

+0

Tôi không thể, tôi là freelancer :) –

Các vấn đề liên quan