Ok, đây là một vấn đề lạ, vì vậy hãy chịu với tôi khi tôi giải thích.Vượt qua vấn đề tham chiếu với PHP 5.3.1
Chúng tôi đã nâng cấp máy chủ dev của mình từ PHP 5.2.5 lên 5.3.1.
tải lên mã của chúng tôi sau khi chuyển đổi, chúng tôi bắt đầu nhận được lỗi như:
Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in /home/spot/trunk/system/core/Database.class.php on line 105
dòng đề cập (105) như sau:
call_user_func_array(Array($stmt, 'bind_param'), $passArray);
chúng tôi đã thay đổi dòng vào như sau:
call_user_func_array(Array($stmt, 'bind_param'), &$passArray);
tại thời điểm này (vì allow_call_time_pass_reference
) bị tắt, php ném này:
Deprecated: Call-time pass-by-reference has been deprecated in /home/spot/trunk/system/core/Database.class.php on line 105
Sau khi cố gắng khắc phục điều này trong một thời gian, tôi gục ngã và thiết lập allow_call_time_pass_reference
để trên.
Điều đó đã loại bỏ cảnh báo Deprecated
, nhưng hiện tại cảnh báo Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference
được ném mỗi lần, có hoặc không có tham chiếu.
Tôi không có cách nào để sửa lỗi này. Nếu phương thức đích là của riêng tôi, tôi sẽ chỉ tham chiếu đến các vars đến trong khai báo func, nhưng đó là một phương thức native (tương đối) (mysqli).
Có ai đã trải nghiệm điều này không? Làm thế nào tôi có thể vượt qua nó?
Cảm ơn bạn.
Ngoài ra, trong đoạn code trên $ stmt là một đối tượng trở về từ mysqli :: chuẩn bị – Spot
Tôi cũng có vấn đề này và tìm thấy [này] (https://sixohthree.com/1486/migrating-to-php-5-3-call_user_func_array) bài đăng trên blog đã giúp tôi rất nhiều. – cb0