2010-08-09 33 views

Trả lời

1

Nếu bạn đang giữ nó trong một file riêng biệt, bạn có bao gồm nó nhiều hơn một lần vô tình

+1

tôi chỉ kiểm tra, không có – Rob

7

đó? sẽ có nghĩa là bạn đã xác định hàm trong hai chậu hoặc bạn bao gồm cùng một tệp hai lần.

Sử dụng include_once/require_once thay vì bao gồm/yêu cầu.

+1

cố gắng đó. cùng một vấn đề – Rob

+0

@Rob ngay trước khi bạn khai báo mss(), sử dụng lệnh này: var_dump (get_included_files()); Đảm bảo không có tệp trùng lặp nào được bao gồm. –

3

Câu trả lời của Ben Rowe gần như chắc chắn là lý do tại sao nó xảy ra.

Tôi không khuyên bạn điều này, nhưng bạn luôn có thể quấn chức năng của bạn trong function_exists()

if(!function_exists("mss")) { 

    function mss($value){ 
     $data = mysql_real_escape_string(trim(strip_tags($value))); 
     return $data; 
    } 

} 

Giải pháp này là lộn xộn. Nó hầu như luôn luôn thích hợp hơn để tìm ra TẠI SAO tệp của bạn đang được bao gồm hai lần hoặc khi hàm này được xác định hai lần. Nhưng, trong trường hợp đặc biệt, giải pháp này có thể là thích hợp.

+0

Có thể hoạt động. Tôi đã không khuyên bạn nên nó vì nó thường là một hit hiệu suất không cần thiết. –

+2

thậm chí có thể tạo ra lỗi 'không thể redeclare': \ – Rob

+1

@Rob Bạn có chắc là bạn đang chỉnh sửa đúng tệp không? Thông báo lỗi chính xác nói gì? Những gì tập tin/dòng đã được tuyên bố ban đầu và những gì tập tin/dòng là nó được redeclared? –

0

include_once (không bao gồm) hoạt động miễn là bạn có hàm được khai báo một lần chỉ trong tệp .php riêng biệt. Vui lòng kiểm tra kỹ xem Chức năng có được đề cập ở nơi khác không.

0

Bạn nên: include_once thay vì: bao gồm

+2

Bạn có thể giải thích về câu trả lời này không? – ppovoski

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