[英]SQL query not being executed from AJAX '$_POST' to PHP file
我正在從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是“整數”。 這意味着我從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();
}
}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.