2012-10-28 32 views
24

Tôi chỉ cần sự giúp đỡ về lỗi PHP này mà tôi không hoàn toàn hiểu:PHP lỗi: "Không thể vượt qua tham số 2 bằng cách tham khảo"

Fatal error: Cannot pass parameter 2 by reference in /web/stud/openup/inactivatesession.php on line 13

<?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(); 

?> 

lỗi này có nghĩa gì? Lỗi này có thể được khắc phục như thế nào?

+0

tài liệu tham khảo dành cho bạn: vấn đề này có vấn đề tương tự http://stackoverflow.com/questions/8287581/how -to-resolve-cannot-pass-tham số-by-reference-error-in-php # autocomment44785441 – Yoshi

Trả lời

65

Lỗi có nghĩa là đối số thứ hai được mong đợi là tham chiếu đến biến số.

Vì bạn không bàn giao số biến nhưng số số nguyên có giá trị 0, lỗi này tạo ra lỗi.

Để phá vỡ làm điều này:

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

Trong trường hợp bạn muốn hiểu những gì đang xảy ra, như trái ngược với chỉ sửa chữa Fatal error của bạn, đọc: http://php.net/manual/en/language.references.pass.php

+4

Đôi khi PHP có thể rất lạ. –

4

Trước tiên, bạn không nên sử dụng DATE_FORMAT khi bạn muốn so sánh ngày vì DATE_FORMAT thay đổi ngày thành chuỗi không phải là ngày nữa,

UPDATE Session 
SET Active = ? 
WHERE SessionDate <= ? 

Thứ hai, lưu trữ các giá trị đầu tiên trên một biến và vượt qua nó trên paramater

$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(); 
Các vấn đề liên quan