使用AJAX从客户端插入mySQL

时间:2014-12-05 19:27:34

标签: php jquery ajax

我想将数据从客户端插入远程mySQL数据库

我正在调用一个函数并将变量传递给它。

function uploadMetrics(email){
   var email;

  $.ajax({
    type: 'post',
    url: 'php/insertConvertData.php',
    data: {
        data: {"email" : email },
       //data:email,
    },
    success: function(result) {
        console.log(result);
    }
  });
}

在服务器上我有一个php文件

$user = $_POST['email'];
echo $user;
echo '<pre>';
print_r($_POST); // for viewing it as an array
var_dump($_POST); // for viewing all info of the array
echo '</pre>';


$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO cms_conversion_funnel (email)
VALUES ('" . $user . "')";


if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

代码运行正常,我可以连接到数据库并运行插入但插入一个空字符串。

我将'email'的值转出到控制台并得到了这个:

(
   [data] => Array
        (
            [email] => teretst@gmail.com
        )

)
array(1) {
  ["data"]=>
  array(1) {
    ["email"]=>
    string(17) "teretst@gmail.com"
  }
}

似乎电子邮件变量中有一个值,但它没有被传递到insert语句中。任何人都可以提供帮助,我是php和AJAX的新手。

3 个答案:

答案 0 :(得分:1)

因为它是$_POST['data']['email'],而不是$_POST['email']

答案 1 :(得分:1)

使用data: {"email" : email },电子邮件是一个参数,您不必再次声明它:

function uploadMetrics(email){          
  $.ajax({
    type: 'post',
    url: 'php/insertConvertData.php',
    data: {"email" : email },
    success: function(result) {
        console.log(result);
    }
  });
}

答案 2 :(得分:1)

这是因为您将可变电子邮件作为输入,然后重新声明同样的电子邮件,这又将其变为空。请删除 Var电子邮件。

接下来你需要获取$ _POST ['data'] ['email']