2009-01-13 36 views

Trả lời

0

Bạn có đủ đặc quyền đối với tài khoản bạn đang kết nối từ PHP không? Từ the manual

Tính đến MySQL 5.0.3, để thực hiện CREATE PROCEDURE hoặc CREATE FUNCTION tuyên bố, nó là cần thiết để có CREATE đặc quyền ROUTINE

Xem thêm Stored Routines and MySQL Privileges trong cuốn hướng dẫn.

2

Chừng nào:

  • Bạn đang sử dụng MySQL 5.0+
  • Tài khoản của bạn đã được ủy quyền để tạo thủ tục lưu trữ
  • Bạn đang sử dụng hợp lệ CREATE PROCEDURE syntax

Sau đó, nó sẽ hoạt động. Kiểm tra chúng và lấy lại cho chúng tôi.

1

Bên cạnh các đặc quyền, những gì hoàn toàn có thể có thể gây ra vấn đề của bạn, mà thực sự mysql_query ($ query) chỉ có thể làm việc một lệnh cho mỗi cuộc gọi!

Vì vậy, những gì bạn phải làm là chia các lệnh thành các lệnh mysql_query ($ query) sevaral.

gì tôi có nghĩa là một cái gì đó như thế này:

$query = "DROP FUNCTION IF EXISTS fnElfProef (accountNr INT)"; 

mysql_query($query); 

$query = "CREATE FUNCTION fnElfProef (accountNr INT) 
    RETURNS BOOLEAN 
     BEGIN 
      DECLARE i, totaal INT DEFAULT 0; 
      WHILE i < 9 DO 
      SET i = i+1; 
      SET totaal = totaal+(i*(accountNr%10)); 
      SET accountNr = FLOOR(accountNr/10); 
      END WHILE; 
     RETURN (totaal%11) = 0; 
    END"; 
mysql_query($query); 


$query = "SELECT * FROM mytable"; 
mysql_query($query); 
0

Bạn không thể sử dụng câu lệnh DELIMITER từ bên trong PHP. Do đó,

1) remove the DELIMITER statements 
2)and change all your delimiters to ; 

Đó là khó chịu vì bây giờ bạn cần phải có một phiên bản với delimiters cho sự phát triển và thử nghiệm trong dòng lệnh MySQL hoặc một công cụ MySQL như SQLyog hoặc MySQL workbench, và một phiên bản mà không delimiters sử dụng thông qua PHP của bạn chương trình.

Nếu ai đó biết một cách tốt hơn, tôi muốn nghe nó - (nhưng không phải bằng cách gọi một kịch bản shell OS -. Có quá nhiều vấn đề còn lại)

Và bạn cần quyền SUPER.

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