我得到这个错误:变量应该通过bindParam方法的引用传递.(但并非总是如此??)


Im getting this error: variables should be passed by reference in bindParam method....(but not always??)

我正在做一个基本的插入与pdo,我没有我的成功消息,当我提交我的表单。

但是两者都没有错误,所以我在我的代码顶部使用error_reporting(E_ALL);

我现在得到一个错误::只有变量应该在$insert->bindParam(9, convert_datetime($f['date']));中通过引用传递。

这个错误很有启发性,然而,我不明白为什么我有这个错误,因为在其他部分,例如插入类别,我在我的bindParam中使用这个函数,它工作得很好。

$insert = $pdo->prepare("INSERT INTO admins(name, email, pass, date) VALUES (?,?,?,?)");  
$insert->bindParam(1, $f['name']);
$insert->bindParam(2, $f['email']);
$insert->bindParam(3, $f['pass']);
$insert->bindParam(4, convert_datetime($f['date']));
$insert->execute();

if($i_a->rowCount() >=1){   
    echo '<div>Admin inserted with sucess</div>';
}

我的函数convert_datetime()

function convert_datetime($date_received){
    $english = array("...");
    $spanish = array("...");
    $result_date = str_ireplace ($english , $spanish, $date_received);
    $date_received = DateTime::createFromFormat('l, j F, Y', $result_date);
    $date_received = $date_received->format('Y-m-d H:i:s'); 
    return $date_received;

谢谢你的帮助,我现在找到我的问题了

似乎这个问题与我的bindParam方法中的函数无关。

我的admins表有一个列"avatar"被定义为非空(avatar varchar(255) NOT NULL,),我在没有选择任何头像的情况下插入我的admin。

所以我只需要在我的数据库中更改我的头像定义为avatar varchar(255) DEFAULT NULL,,,现在一切都很好。

谢谢你的帮助!

第一个参数以外的参数通过引用传递。这意味着它们必须是变量,而不是字符串。试试这个

$date = convert_datetime($f['date']);
$insert->bindParam(4, $date);