我试图通过调用后端来创建异步验证。我需要使用let params = new URLSearchParams(); params.append('email', registerEmail);
传递数据,因为PHP没有看到$_POST[email]
。
registerEmail
是123@123.pl
。
let params = new URLSearchParams();
params.append('email', registerEmail);
return axios.post('/api/auth/checkUnique.php', params, axiosConfig)
.then(res => {
console.log('true');
console.log(res);
return true;
})
.catch(res => {
console.log('false');
console.log(res);
return false;
});
在后端,我选择使用此值并使用var_dump()
选择do db。
var_dump('email is: ');
var_dump($_POST['email']);
$query = "
SELECT
*
FROM
" . $this->table_name . "
WHERE
nick = ?
OR
email = ?
";
// prepare query statement
$stmt = $this->conn->prepare($query);
// bind params
$stmt->bindParam(1, $nick);
$stmt->bindParam(2, $email);
// execute query
$stmt->execute();
//count if there is any
$num = $stmt->rowCount();
if ($num > 0)
{
return false;
}
else
{
return true;
}
虽然我确信在我的数据库中我有一封电子邮件123@123.pl
但它找不到它并且它返回真实。
var_dump()
函数返回data: "string(10) \"email is: \"\nstring(25) \"[object HTMLInputElement]\"\n"
。我认为这不是我想要的123@123.pl
,这就是为什么我的SELECT
无法找到任何记录。
为什么?
答案 0 :(得分:1)
就像你说它返回object HTMLInputElement
,
那不好。
return axios.post('/api/auth/checkUnique.php', params, axiosConfig)
PHP希望获得<input name='email'>
或类似示例params
必须为json
{email: some@email.com}
还有你的问题。