我想将数据从客户端插入远程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的新手。
答案 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']