簡體   English   中英

PHP 錯誤:“無法通過引用傳遞參數 2”

[英]PHP error: "Cannot pass parameter 2 by reference"

我只需要關於這個 PHP 錯誤的幫助,我不太明白:

致命錯誤:無法通過第 13 行 /web/stud/openup/inactivatesession.php 中的引用傳遞參數 2

<?php

error_reporting(E_ALL);

include('connect.php');

$createDate = mktime(0,0,0,09,05,date("Y"));
$selectedDate =  date('d-m-Y', ($createDate));

$sql = "UPDATE Session SET Active = ? WHERE DATE_FORMAT(SessionDate,'%Y-%m-%d' ) <= ?";
$update = $mysqli->prepare($sql);
$update->bind_param("is", 0, $selectedDate);  //LINE 13
$update->execute();

?>

這個錯誤是什么意思? 如何修復此錯誤?

該錯誤意味着第二個參數應該是對變量的引用

由於您不是在處理變量而是值 0 的整數,因此它會產生所述錯誤。

為了避免這種情況:

$a = 0;
$update->bind_param("is", $a, $selectedDate);  //LINE 13

如果您想了解正在發生的事情,而不是僅僅修復您的Fatal error ,請閱讀以下內容:http: //php.net/manual/en/language.references.pass.php

首先,當你想比較日期時,你不應該使用DATE_FORMAT因為DATE_FORMAT將其更改為字符串而不是日期

UPDATE Session 
SET Active = ? 
WHERE SessionDate <= ?

其次,首先將值存儲在變量上並將其傳遞給參數

$createDate = mktime(0,0,0,09,05,date("Y"));
$selectedDate =  date('d-m-Y', ($createDate));
$active = 0;
$sql = "UPDATE Session SET Active = ? WHERE SessionDate <= ?";                                         
$update = $mysqli->prepare($sql);
$update->bind_param("is", $active, $selectedDate);  
$update->execute();

bindParam() 的 insted 使用 bindValue..

$getData = "SELECT * FROM tbl_users WHERE ID = ?";
$stmt = $db->prepare("SELECT * FROM tbl_users WHERE ID=:ID");
*$stmt->bindParam('ID',3);*
$stmt->execute();
$rcd = $stmt->fetch(PDO::FETCH_OBJ);


$getData = "SELECT * FROM tbl_users WHERE ID = ?";
$stmt = $db->prepare("SELECT * FROM tbl_users WHERE ID=:ID");
$stmt->bindValue('ID',3);
$stmt->execute();
$rcd = $stmt->fetch(PDO::FETCH_OBJ);

暫無
暫無

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

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