我正在尝试使用此代码更新数据库中的令牌,但收到此错误:
注意:未定义的变量:第185行的C:\ MAMP \ htdocs \ admin-dashboard \ action.php中的stmt_i
可恢复的致命错误:第185行的C:\ MAMP \ htdocs \ admin-dashboard \ action.php中无法将mysqli类的对象转换为字符串
if(count($assoc_array)>0){
$token = "qwertyuiopasdfghjklzxcvbnm1234567890jksdhfljdhfajlsdbhkfdajsfhaljsdfhb";
$token=str_shuffle($token);
$token=substr($token, 0,10);
// echo $token;
$stmt_i->$conn->prepare("UPDATE users SET token=?, tokenExpire=DATE_ADD(NOW(), INTERVAL 5 MINUTE) WHERE email=?");
$stmt_i->bind_param("ss",$token,$femail);
$stmt_i-> execute();
}
答案 0 :(得分:0)
您需要执行以下操作:
$femail
变量使用prepare()
准备语句,并将结果分配给$stmt_i
变量。然后绑定每个参数值并执行您的语句。请注意,prepare()是mysqli
类的方法,而bind_param()和execute()是mysqli_stmt
类的方法。
if (count($assoc_array) > 0) {
$token = "qwertyuiopasdfghjklzxcvbnm1234567890jksdhfljdhfajlsdbhkfdajsfhaljsdfhb";
$token = str_shuffle($token);
$token = substr($token, 0,10);
$femail = 'some@email.com';
$stmt_i = $conn->prepare("UPDATE users SET token=?, tokenExpire=DATE_ADD(NOW(), INTERVAL 5 MINUTE) WHERE email=?");
$stmt_i->bind_param("ss", $token, $femail);
$stmt_i->execute();
}
?>