Hướng dẫn mysql allow multiple queries - mysql cho phép nhiều truy vấn

Vượt qua 65536 đến mysql_connect là tham số thứ 5.

Nội phân Chính showShow

  • 3.6.3 & NBSP; Hỗ trợ thực thi nhiều câu lệnh
  • Làm cách nào để kết hợp nhiều truy vấn SQL trong một kết quả?
  • Làm cách nào để viết nhiều truy vấn trong SQL?
  • Làm cách nào để hợp nhất hai truy vấn MySQL?
  • Làm thế nào chạy nhiều truy vấn MySQL trong PHP?

Example:

$conn = mysql_connect['localhost','username','password', true, 65536 /* here! */] 
    or die["cannot connect"];
mysql_select_db['database_name'] or die["cannot use database"];
mysql_query["
    INSERT INTO table1 [field1,field2] VALUES[1,2];

    INSERT INTO table2 [field3,field4,field5] VALUES[3,4,5];

    DELETE FROM table3 WHERE field6 = 6;

    UPDATE table4 SET field7 = 7 WHERE field8 = 8;

    INSERT INTO table5
       SELECT t6.field11, t6.field12, t7.field13
       FROM table6 t6
       INNER JOIN table7 t7 ON t7.field9 = t6.field10;

    -- etc
"];

Khi bạn đang làm việc với mysql_fetch_* hoặc mysql_num_rows hoặc mysql_affed_rows, chỉ có câu lệnh đầu tiên là hợp lệ.

Ví dụ: các mã sau, câu lệnh đầu tiên là chèn, bạn không thể thực hiện mysql_num_rows và mysql_fetch_*. Không sao khi sử dụng mysql_affed_rows để trả về số lượng hàng được chèn.

$conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
mysql_select_db['database_name'] or die["cannot use database"];
mysql_query["
    INSERT INTO table1 [field1,field2] VALUES[1,2];
    SELECT * FROM table2;
"];

Một ví dụ khác, các mã sau, câu lệnh đầu tiên là chọn, bạn không thể thực hiện mysql_affed_rows. Nhưng bạn có thể thực hiện mysql_fetch_assoc để có một cặp hàng giá trị khóa kết quả từ câu lệnh chọn đầu tiên hoặc bạn có thể thực hiện mysql_num_rows để có số lượng hàng dựa trên câu lệnh chọn đầu tiên.

$conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
mysql_select_db['database_name'] or die["cannot use database"];
mysql_query["
    SELECT * FROM table2;
    INSERT INTO table1 [field1,field2] VALUES[1,2];
"];

3.6.3 & NBSP; Hỗ trợ thực thi nhiều câu lệnh

Làm cách nào để kết hợp nhiều truy vấn SQL trong một kết quả?

Làm cách nào để viết nhiều truy vấn trong SQL?

Làm cách nào để hợp nhất hai truy vấn MySQL?Failure to process the result this way may result in a dropped connection to the server.

Làm thế nào chạy nhiều truy vấn MySQL trong PHP?

  • Khi bạn đang làm việc với mysql_fetch_* hoặc mysql_num_rows hoặc mysql_affed_rows, chỉ có câu lệnh đầu tiên là hợp lệ.

    Ví dụ: các mã sau, câu lệnh đầu tiên là chèn, bạn không thể thực hiện mysql_num_rows và mysql_fetch_*. Không sao khi sử dụng mysql_affed_rows để trả về số lượng hàng được chèn.

  • Một ví dụ khác, các mã sau, câu lệnh đầu tiên là chọn, bạn không thể thực hiện mysql_affed_rows. Nhưng bạn có thể thực hiện mysql_fetch_assoc để có một cặp hàng giá trị khóa kết quả từ câu lệnh chọn đầu tiên hoặc bạn có thể thực hiện mysql_num_rows để có số lượng hàng dựa trên câu lệnh chọn đầu tiên.

Theo mặc định, mysql_real_query[]mysql_query[] Giải thích đối số chuỗi câu lệnh của họ là một câu lệnh được thực thi và bạn xử lý kết quả theo liệu câu lệnh tạo ra một tập kết quả [một tập hợp các hàng, như đối với SELECT] hoặc số lượng hàng bị ảnh hưởng [ Đối với INSERT,

$conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
mysql_select_db['database_name'] or die["cannot use database"];
mysql_query["
    INSERT INTO table1 [field1,field2] VALUES[1,2];
    SELECT * FROM table2;
"];
0, v.v.].

MySQL cũng hỗ trợ thực thi một chuỗi chứa nhiều câu lệnh được phân tách bằng các ký tự Semicolon [

$conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
mysql_select_db['database_name'] or die["cannot use database"];
mysql_query["
    INSERT INTO table1 [field1,field2] VALUES[1,2];
    SELECT * FROM table2;
"];
1]. Khả năng này được bật bởi các tùy chọn đặc biệt được chỉ định khi bạn kết nối với máy chủ với
$conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
mysql_select_db['database_name'] or die["cannot use database"];
mysql_query["
    INSERT INTO table1 [field1,field2] VALUES[1,2];
    SELECT * FROM table2;
"];
2 hoặc sau khi kết nối bằng cách gọi
$conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
mysql_select_db['database_name'] or die["cannot use database"];
mysql_query["
    INSERT INTO table1 [field1,field2] VALUES[1,2];
    SELECT * FROM table2;
"];
3.

  • Thực hiện một chuỗi nhiều statement có thể tạo ra nhiều bộ kết quả hoặc các chỉ báo số hàng. Xử lý các kết quả này liên quan đến một cách tiếp cận khác với trường hợp tuyên bố đơn: sau khi xử lý kết quả từ câu lệnh đầu tiên, cần kiểm tra xem có nhiều kết quả tồn tại hay không và lần lượt xử lý chúng nếu như vậy. Để hỗ trợ xử lý nhiều kết quả, C API bao gồm các hàm

    $conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
    mysql_select_db['database_name'] or die["cannot use database"];
    mysql_query["
        INSERT INTO table1 [field1,field2] VALUES[1,2];
        SELECT * FROM table2;
    "];
    
    4 và
    $conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
    mysql_select_db['database_name'] or die["cannot use database"];
    mysql_query["
        INSERT INTO table1 [field1,field2] VALUES[1,2];
        SELECT * FROM table2;
    "];
    
    5. Các chức năng này được sử dụng ở cuối một vòng lặp lặp đi lặp lại miễn là có nhiều kết quả hơn. Việc không xử lý kết quả theo cách này có thể dẫn đến kết nối bị rơi với máy chủ.

    • Xử lý nhiều kết quả cũng là bắt buộc nếu bạn thực hiện các câu lệnh

      $conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
      mysql_select_db['database_name'] or die["cannot use database"];
      mysql_query["
          INSERT INTO table1 [field1,field2] VALUES[1,2];
          SELECT * FROM table2;
      "];
      
      6 cho các thủ tục được lưu trữ. Kết quả từ một thủ tục được lưu trữ có những đặc điểm này:must be enabled if you execute
      $conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
      mysql_select_db['database_name'] or die["cannot use database"];
      mysql_query["
          INSERT INTO table1 [field1,field2] VALUES[1,2];
          SELECT * FROM table2;
      "];
      
      6 statements for stored procedures that produce result sets. Otherwise, such procedures result in an error
      $conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
      mysql_select_db['database_name'] or die["cannot use database"];
      mysql_query["
          SELECT * FROM table2;
          INSERT INTO table1 [field1,field2] VALUES[1,2];
      "];
      
      4 can't return a result set in the given context.
      $conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
      mysql_select_db['database_name'] or die["cannot use database"];
      mysql_query["
          SELECT * FROM table2;
          INSERT INTO table1 [field1,field2] VALUES[1,2];
      "];
      
      2 is enabled by default.

    • Các câu lệnh trong quy trình có thể tạo ra các tập kết quả [ví dụ: nếu nó thực thi các câu lệnh SELECT]. Các bộ kết quả này được trả về theo thứ tự mà chúng được sản xuất khi thủ tục thực thi.

  • Nói chung, người gọi không thể biết có bao nhiêu kết quả đặt một thủ tục sẽ trở lại. Thực hiện thủ tục có thể phụ thuộc vào các vòng lặp hoặc các câu lệnh có điều kiện khiến đường dẫn thực thi khác với cuộc gọi này sang cuộc gọi tiếp theo. Do đó, bạn phải chuẩn bị để lấy nhiều kết quả.simple results for a multiple-statement string where each statement produces a single result, but is not sufficient to permit processing of stored procedures that produce result sets.

Quy trình sau đây phác thảo một chiến lược được đề xuất để xử lý nhiều tuyên bố:

  1. Chuyển

    $conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
    mysql_select_db['database_name'] or die["cannot use database"];
    mysql_query["
        SELECT * FROM table2;
        INSERT INTO table1 [field1,field2] VALUES[1,2];
    "];
    
    6 cho
    $conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
    mysql_select_db['database_name'] or die["cannot use database"];
    mysql_query["
        INSERT INTO table1 [field1,field2] VALUES[1,2];
        SELECT * FROM table2;
    "];
    
    2, để kích hoạt hoàn toàn thực thi nhiều giai đoạn và xử lý nhiều kết quả.

  2. Sau khi gọi mysql_real_query[] hoặc mysql_query[] và xác minh rằng nó thành công, hãy nhập một vòng lặp trong đó bạn xử lý kết quả báo cáo.

  3. Đối với mỗi lần lặp của vòng lặp, xử lý kết quả câu lệnh hiện tại, truy xuất một tập kết quả hoặc số lượng hàng bị ảnh hưởng. Nếu xảy ra lỗi, thoát khỏi vòng lặp.

  4. Vào cuối vòng lặp, hãy gọi

    $conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
    mysql_select_db['database_name'] or die["cannot use database"];
    mysql_query["
        INSERT INTO table1 [field1,field2] VALUES[1,2];
        SELECT * FROM table2;
    "];
    
    5 để kiểm tra xem một kết quả khác có tồn tại và bắt đầu truy xuất cho nó không. Nếu không có thêm kết quả, hãy thoát khỏi vòng lặp.

Một thực hiện có thể của chiến lược trước được hiển thị sau. Phần cuối cùng của vòng lặp có thể được giảm xuống thành một bài kiểm tra đơn giản về việc

$conn = mysql_connect['localhost','username','password', true, 65536] or die["cannot connect"];
mysql_select_db['database_name'] or die["cannot use database"];
mysql_query["
    INSERT INTO table1 [field1,field2] VALUES[1,2];
    SELECT * FROM table2;
"];
5 có trả lại không khác. Mã bằng văn bản phân biệt giữa không còn kết quả và lỗi, cho phép một thông báo được in cho lần xuất hiện sau.

/* connect to server with the CLIENT_MULTI_STATEMENTS option */
if [mysql_real_connect [mysql, host_name, user_name, password,
    db_name, port_num, socket_name, CLIENT_MULTI_STATEMENTS] == NULL]
{
  printf["mysql_real_connect[] failed\n"];
  mysql_close[mysql];
  exit[1];
}

/* execute multiple statements */
status = mysql_query[mysql,
                     "DROP TABLE IF EXISTS test_table;\
                      CREATE TABLE test_table[id INT];\
                      INSERT INTO test_table VALUES[10];\
                      UPDATE test_table SET id=20 WHERE id=10;\
                      SELECT * FROM test_table;\
                      DROP TABLE test_table"];
if [status]
{
  printf["Could not execute statement[s]"];
  mysql_close[mysql];
  exit[0];
}

/* process each statement result */
do {
  /* did current statement return data? */
  result = mysql_store_result[mysql];
  if [result]
  {
    /* yes; process rows and free the result set */
    process_result_set[mysql, result];
    mysql_free_result[result];
  }
  else          /* no result set or error */
  {
    if [mysql_field_count[mysql] == 0]
    {
      printf["%lld rows affected\n",
            mysql_affected_rows[mysql]];
    }
    else  /* some error occurred */
    {
      printf["Could not retrieve result set\n"];
      break;
    }
  }
  /* more results? -1 = no, >0 = error, 0 = yes [keep looping] */
  if [[status = mysql_next_result[mysql]] > 0]
    printf["Could not execute statement\n"];
} while [status == 0];

mysql_close[mysql];

Làm cách nào để kết hợp nhiều truy vấn SQL trong một kết quả?

Trong bước này, bạn tạo truy vấn công đoàn bằng cách sao chép và dán các câu lệnh SQL ...

Trên tab Tạo, trong nhóm truy vấn, nhấp vào Thiết kế Truy vấn ..

Trên tab Thiết kế, trong nhóm truy vấn, nhấp vào Union. ....

Nhấp vào tab cho truy vấn chọn đầu tiên mà bạn muốn kết hợp trong truy vấn Liên minh ..

Làm cách nào để viết nhiều truy vấn trong SQL?

Chỉ định nhiều câu lệnh SQL trong yêu cầu trong trường câu lệnh, sử dụng dấu chấm phẩy [;] giữa mỗi câu lệnh. Trong trường tham số, đặt trường Multi_statement_count thành số lượng câu lệnh SQL trong yêu cầu.

Làm cách nào để hợp nhất hai truy vấn MySQL?

Toán tử Liên minh MySQL được sử dụng để kết hợp các bộ kết quả từ 2 hoặc nhiều câu lệnh chọn. Nó loại bỏ các hàng trùng lặp giữa các câu lệnh chọn khác nhau. Mỗi câu lệnh CHỌN trong toán tử Liên minh phải có cùng số trường trong các bộ kết quả với các loại dữ liệu tương tự. is used to combine the result sets of 2 or more SELECT statements. It removes duplicate rows between the various SELECT statements. Each SELECT statement within the UNION operator must have the same number of fields in the result sets with similar data types.

Làm thế nào chạy nhiều truy vấn MySQL trong PHP?

Nhiều câu lệnh hoặc nhiều truy vấn phải được thực thi với mysqli :: multi_query []. Các câu lệnh riêng lẻ của chuỗi câu lệnh được phân tách bằng dấu chấm phẩy. Sau đó, tất cả các bộ kết quả được trả về bởi các câu lệnh được thực thi phải được tìm nạp.mysqli::multi_query[]. The individual statements of the statement string are separated by semicolon. Then, all result sets returned by the executed statements must be fetched.

Chủ Đề