javascript - SQL 查询未从 AJAX '$_POST' 执行到 PHP 文件

标签 javascript php mysql ajax facebook

我正在从 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/

相关文章:

javascript - 在 react native 的文本框中显示日期选择器

php - 从 PDO 查询返回一个包含列名的二维数组

php - Mysql error.sql查询语法错误

mysql - 如何根据第一个表中的行数显示第二个表中的位置名称?

javascript - 同心圆中心的 Canvas 文本

javascript - Angular 1 路由不起作用 - 非常基本

sql - 全文 key 太长

mysql - 多次插入的SQL错误

javascript - 从当前位置向上滑动jQuery效果

php - 更新查询中的两列