Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Simple Insert hoạt động với phpmyadmin nhưng không hoạt động với php

Chỉ cần đảm bảo:khi bạn đang cố gắng thực thi 4 truy vấn này từ PHP, bạn đang gọi mysql_query bốn lần?

Ví dụ:

mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,1,1)");
mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,2,1)");
mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,3,1)");
mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,4,1)");

Ý tôi là
:bạn không thể gửi nhiều truy vấn riêng biệt cùng một lúc, chỉ với một lệnh gọi tới mysql_query (trích dẫn, nhấn mạnh của tôi) :

Bạn phải "tách biệt" các truy vấn của mình - đây có thể là điều mà phpMyAdmin thực hiện mà không cho bạn biết.

Và, như @Alexandre đã chỉ ra trong phần bình luận:


Nếu bạn đang sử dụng mysqli_* các hàm (chứ không phải mysql_* ) để truy cập cơ sở dữ liệu của mình, bạn có thể thử sử dụng mysqli_multi_query .

Thật không may, có chức năng như vậy cho mysql_* .

(BTW:mysql_* API là cái cũ - sẽ tốt hơn, đặc biệt là đối với một dự án mới, sử dụng mysqli_* )


Chỉnh sửa sau nhận xét:

Nếu đó là về hiệu suất, có, thực hiện một lệnh gọi đến cơ sở dữ liệu, thay vì bốn PHP <-> MySQL kế tiếp cuộc gọi, có thể tốt hơn.

Trong trường hợp này, bạn có thể thử sử dụng cú pháp chèn cho phép chèn nhiều dòng cùng một lúc; xem 12.2.5. CHÈN Cú pháp trong hướng dẫn sử dụng của MySQL (trích dẫn) :



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phiên bản lỗi SQL 5.5.15

  2. Vấn đề về MySQL Daemon Lock

  3. Ngăn hai người dùng chỉnh sửa cùng một dữ liệu

  4. MySQL - loại trừ tất cả người dùng bị chặn khỏi kết quả

  5. không thể chèn các ký tự không phải tiếng Anh vào cơ sở dữ liệu bằng crontab để chạy chương trình