[英]Strict standards: Only variables should be passed by reference in C:\wamp\www\lions\admin\UploadmemberHandler.php on line 3
[英]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()
工作,因為我不知道所有的 PHP 內部原理。)
解決方案:完全擺脫@
。 您不想隱藏錯誤消息,因為盲目編碼既沒有效率也沒有樂趣。
使用全局變量將數據庫連接傳遞給函數並以這種方式濫用@
的教程一開始就不是可靠的知識來源,因此最初可能存在如此嚴格的標准違規行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.