SQL-запрос не выполняется из AJAX '$ _POST' в файл PHP - PullRequest
0 голосов
/ 06 января 2019

Я извлекаю информацию о пользователе из API Facebook и отправляю ее через 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 затем запускает это с кнопки facebook с помощью onlogin = "checkLoginState ();" Функция:

    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");
        }
    });
}

В данный момент в базу данных ничего не записывается, и я даже не уверен, как устранить неполадки, чтобы увидеть, что выполняется по пути.

1 Ответ

0 голосов
/ 07 января 2019

У меня было несколько проблем:

Во-первых, мой идентификатор базы данных был типа "Integer". То есть идентификационный номер, который я получал с 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();
    }
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...