未执行从ajax“$\u post”到php文件的sql查询

vc9ivgsu  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(289)

我正在从facebookapi检索用户信息,并通过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");
        }
    });
}

目前,没有任何东西被写入数据库,我甚至不知道如何排除故障,以查看正在执行的过程。

w8ntj3qf

w8ntj3qf1#

我有几个问题:
首先-我的数据库id是“整数”类型。这意味着我从facebook获得的身份证号码长度为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();
    }
}}

相关问题