我正在尝试记录用户尝试登录我的博客时失败的次数,我正在为每个查询使用预准备语句而我不知道为什么但是当我尝试时我有下一个错误保存失败的登录意图:在第70行的C:\ xampp \ htdocs \ Blog \ users \ login.php中调用boolean上的成员函数bind_param()
以下是问题所在的代码......
// code when the login is correct...
} else {
// incorrect password.
// so we save this failed intent
//we make a query to get the actual user's intent
$num_attempts = $conexion->prepare("SELECT session_attemps FROM usuarios WHERE id = ? LIMIT 1");
$num_attempts->bind_param('i', $user_id);
$num_attempts->execute();
$num_attempts->bind_result($attempts);
$num_attempts->fetch();
$attempt= $attempts+1;
//and then we insert that value plus one (the actual failed intent)
$add_attempt=$conexion->prepare("INSERT INTO usuarios(session_attemps) VALUES (?) WHERE id = $user_id");
$add_attempt->bind_param('i', $attempt);
$login_error_message="login data is incorrect";
echo json_encode(array('success' => false, 'text' => $login_error_message));
return false;
}
第70行对应于:$ add_attempt-> bind_param('i',$ user_id);
但是当我通过mysql控制台测试查询(使用正常值或默认值)时,它说错误接近WHERE id = ...
答案 0 :(得分:0)
好吧,它给你一个sintax错误。尝试不同的方法,例如:
update usuarios set session_attempts = ? where id = $user_id;
而不是INSERT INTO usuarios(session_attemps) VALUES (?) WHERE id = $user_id
答案 1 :(得分:0)
prepare()
在遇到查询错误时返回false。你确定你不是不是想写session_attempts
吗?