2012-08-02 59 views
36

我將MyPHP版本升級到5.4(Xampp 1.7.3到1.8.0)。現在我看到嚴格的標準錯誤,爲myDBconnection嚴格的標準:只應通過參考分配變量PHP 5.4

嚴格的標準:只有變量應參考在C分配:\ XAMPP \ htdocs中\ alous \包括上線\ dbconn.php 4

dbconn.php:

<?php 
defined('_VALID') or die('Restricted Access!'); 

$conn = &ADONewConnection($config['db_type']); // <--- This Line 4 

if (!$conn->Connect($config['db_host'], $config['db_user'], $config['db_pass'], $config['db_name'])) { 
    echo 'Could not connect to mysql! Please check your database settings!'; 
    die(); 
} 
$conn->execute("SET NAMES 'utf8'"); 
?> 

注:我並不需要禁用嚴格的標準用這個方法在php.ini中error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT!我想修復我的PHP代碼。

+0

如果將第4行修改爲'$ conn = ADONewConnection($ config ['db_type']);' – 2012-08-02 12:59:27

回答

67

您應該刪除&(符號)符號,使4號線將是這樣的:

$conn = ADONewConnection($config['db_type']); 

php's manual on assignment by reference

由於PHP 5中,new運算符返回引用自動,所以 在PHP 5.3及更高版本中將E_DEPRECATED 消息中的引用結果分配爲新的結果,並在早期的 版本中分配E_STRICT消息。

+5

但是他沒有使用'new',警告消失了嗎? – sam 2013-10-22 21:16:31

+12

是的,'&'應該在這個例子中被移除,但不是因爲給出(如@sam所示)。只是賦值的結果不是_variable_,它導致了E_STRICT消息,而不是E_DEPRECATED警告,這是'new'運算符發生的情況。實際上,如果'ADONewConnection()'_function_設置爲[返回引用],則使用'=&'實際上可能是有效的(http://www.php.net/manual/en/language.references.return.php )。 – MrWhite 2014-04-29 14:17:37

8

這是因爲你試圖通過引用分配一個對象。刪除&符號,您的腳本應按預期工作。

-13

我也有這個問題。

我沒有看到任何變化改變後:

error_reporting = E_ALL 

display_errors = Off 

關閉我的瀏覽器,並停止在XAMP連接錯誤信息都不見了啓動Apache的。

+8

隱藏錯誤不是解決方案! – kanenas 2014-10-14 12:45:37

+0

隱藏錯誤不是一個好的解決方案。不幸的是,這是一個「解決方案」,我需要不時找到另一個更好的解決方案。 – 2018-01-28 19:02:34

相關問題