我读了很多关于这方面的教程,但似乎无法让它发挥作用-我在服务器上有以下PHP文件:
<?php
$host_name = "";
$database = "";
$user_name = "";
$password = "";
$connect = mysqli_connect($host_name, $user_name, $password, $database);
$user = $_POST['user'];
$sports = $_POST['sports'];
$location = $_POST['location'];
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "UPDATE `userActivityLocation` WHERE user='$user' SET sports='$sports', location='$location'";
$result=mysql_query($sql);
?>
我试了好几种方法都没有用,不知道我做错了什么!如有任何建议,我们将不胜感激,谢谢!
编辑:我已经按照morgeunder的建议尝试了以下操作,但我仍然看不到数据库中创建的任何记录。
这是提交按钮的点击监听器:
$('#register').click(function () {
console.log("Ready! Getting the user details.");
username = document.getElementById('login').value;
password = document.getElementById('password').value;
email = document.getElementById('email').value;
window.localStorage.setItem("user", username);
console.log("Username: ", username);
console.log("Password: ", password);
console.log("E-Mail: ", email);
var params, connection;
params = {
login: username,
password: password,
email: email
};
//console.log("Params: ", params);
console.log("Creating new user");
QB.users.create(params, function (err, result) {
console.log("Result: ", result.toString());
// callback function
alert(username.toString());
var usernamePost = username.toString();
$.post("http://www.baseurl.co.uk/API/users.php", { user: usernamePost }, function (data) {
console.log(data);
console.log("HERE");
});
window.location = "sportsSelector.html"
});
});
您已经说过,您想要插入记录,但您使用了UPDATE
SQL命令。这就是为什么没有创建记录。
试试这个:
$sql = "INSERT INTO `userActivityLocation`(user,sports,location) VALUES ('$user', '$sports', '$location')";
还有一些事情需要考虑:
- jQuery肯定比普通的老xhr对象更容易。它为您处理跨浏览器问题
- 如果API位于客户端之外的其他服务器上,则应在服务器站点上设置某种交叉源过滤器(您可以在
.htaccess
中这样做 - 从字符串中"粘合"SQL是不安全的,因为可能存在SQL注入。准备好的陈述就是这个问题的答案
已解决!在你们这些可爱的人的帮助下,但最终的答案是一个完全独立的、不那么明显的问题。事件正在启动,帖子正在启动,服务器端代码很好,javascript在修复后也很好,但随后它被window.location调用粗暴地打断了!这就是破坏交易的原因。