簡體   English   中英

error Strict Standards:Error Only variables should be used by reference in C:\\wamp64\\www\\Exercise Files\\CRUD\\crud-mysqli.php on line 545

[英]error Strict standards:Error Only variables should be passed by reference in C:\wamp64\www\Exercise Files\CRUD\crud-mysqli.php on line 545

在 lynda.com 教程中,我收到此錯誤:

error Strict Standards:Error Only variables should be used by reference in C:\\wamp64\\www\\Exercise Files\\CRUD\\crud-mysqli.php on line 545

我在代碼中看不到任何通過引用傳遞的內容。
我知道 @ 操作符是一個錯誤操作符,我認為這是導致錯誤的原因

function insert_album_sql( $album )
{
global $CRUD;
$dbh = $CRUD['dbh'];

$query = '
    INSERT INTO album
        ( title, artist, label, released )
        VALUES ( ?, ?, ?, ? )
';

$sth = $dbh->prepare($query);
if($sth) {
    $sth->bind_param("ssss", @$album['title'], @$album['artist'],   @$album['label'], @$album['released'] );
    $sth->execute();
} else {
    error("insert_album_sql: insert prepare returned no statement handle");    
}

// check for errors
$err = $sth->error;
if($err) error( $err );

return($dbh->insert_id);
}

我有根據的猜測是第 545 行是這樣的:

$sth->bind_param("ssss", @$album['title'], @$album['artist'],   @$album['label'], @$album['released'] );

不過,您比我們任何人都有更好的機會確定它,因為任何體面的編輯器都應該有辦法顯示行號或逐行瀏覽。

bind_param()手冊頁

將變量綁定到准備好的語句作為參數

這意味着該函數不讀取該值。 相反,它保留對原始變量的引用,以便稍后讀取。 如果不提供原始變量,它將無法工作。

(免責聲明:我還沒有真正測試過@特別是是否真的阻止了bind_param()工作,因為我不知道所有的 PHP 內部原理。)

解決方案:完全擺脫@ 您不想隱藏錯誤消息,因為盲目編碼既沒有效率也沒有樂趣。

使用全局變量將數據庫連接傳遞給函數並以這種方式濫用@的教程一開始就不是可靠的知識來源,因此最初可能存在如此嚴格的標准違規行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM