我正在从 facebook API 检索用户信息,并通过 AJAX 将其发送到我的 php 文件以写入 mysql 数据库。 这样做的原因是我可以生成一个随机优惠券代码给他们,该代码也被写入数据库。
我在这方面没有任何经验,我只是一路学习。
我的PHP文件:
<?php
include_once 'db_connect.php';//$mysqli = new mysqli(HOST, USER, PASSWORD,
DATABASE);
include_once 'psl-config.php';//database login details
if(isset($_POST['name'],$_POST['email'],$_POST['id'])){
$name = $_POST['name'];
$email = $_POST['email'];
$uid = $_POST['id'];
$code = generateRandomString();
$prep_stmt="INSERT INTO memberinfo (name, email, id,code,dateadded) VALUES ('$name','$email','$uid','$code',now())";
$stmt = $mysqli->prepare($prep_stmt);
if($stmt) {
$stmt->execute();
$stmt->close();
}}
然后我的 javascript 通过 onlogin="checkLoginState();"从 facebook 按钮运行此代码功能:
function checkLoginState() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
FB.api('/me', { locale: 'en_US', fields: 'name,email,id' },
function(response) {
$.ajax({
method: "POST",
url: "includes/process_fb_login.php",
data: response,
dataType: 'json',
cache: false,
success: function(data){
console.log(data);
}
});
});
}else{
alert("Failed to login");
}
});
}
目前没有任何内容被写入数据库,我什至不知道如何进行故障排除以查看一路上正在执行的内容。
最佳答案
我有几个问题:
首先 - 我的数据库 ID 类型为“Integer”。这意味着我从 facebook 获得的 ID 号长度为 15 个字符,最大值为 2147483647(10 个字符)(有符号)或 4294967295(无符号)。所以我将其更改为 varchar。
其次 - 似乎 if(isset($_POST['name'],$_POST['email'],$_POST['id']))
有点让我感到困惑,我无法让它跑过那条线。
最后,这是对我有用的代码。
不确定这是否是最好的方法,但是,嘿,它对我有用。
$email_exists="select email from memberinfo where email ='".$_POST['email']."'";
$exe = $mysqli->prepare($email_exists);
if($exe) {
$exe->execute();
$exe->store_result();
if ($exe->num_rows == 1) {
// A user with this email address already exists
$exe->close();
} else {
$prep_stmt = "INSERT INTO memberinfo (name, email,username,id,code,dateAdded)
VALUES ('".$_POST['name']."','".$_POST['email']."','".$_POST['email']."','".$_POST['id']."','$code',now())";
$stmt = $mysqli->prepare($prep_stmt);
if ($stmt) {
$stmt->execute();
$stmt->close();
}
}}
关于javascript - SQL 查询未从 AJAX '$_POST' 执行到 PHP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54059916/