将数据从ajax传递到php到mysql奇怪的问题

时间:2014-01-27 02:51:54

标签: javascript php mysql ajax

我之前问了一个类似的问题,但我认为我得到了错误的观点并且更多地了解了安全问题,而不是解决我遇到的问题。我的ajax请求将数据发布到php脚本然后将其提交到数据库时遇到问题。

为了说清楚,该网站是本地的,我除了我之外没有人创建帐户,我将是唯一访问它的人。一旦我完成这一步,我会保证安全。

我得到的当前错误:无,但在警报成功后没有数据(“成功”+数据)

我已经用Google搜索/工作了10多个小时...任何帮助都会非常感激,因为我只是在学习。

这是我的Javascript:

var firstname = String($("#firstname").val());
var lastname = String($("#lastname").val());
var username = String($("#username").val());
var email = String($("#email").val());
var password = String($("#password").val());

这是AJAX:

$.ajax({
    type: 'POST',
    url: 'create_account.php',
    data: {firstname_php: firstname, 
           lastname_php: lastname, 
           username_php: username, 
           email_php: email, 
           password_php: password},
    success: function(data) {
        alert("success" + data);
    }
});

create_account.php:

$firstname = $_POST['firstname_php'];
$lastname = $_POST['lastname_php'];
$username = $_POST['username_php'];
$email = $_POST['email_php'];
$password = $_POST['password_php'];

echo "$firstname";
// Create connection
$connection = mysqli_connect("localhost","root","root","MyDatabase");
// Check connection
if (mysql_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}


$sql = "INSERT INTO users (user_id, user_firstname, user_lastname, user_username, user_email, user_password) VALUES (0, '$firstname', '$lastname', '$username', '$email', '$password)'";
$result = mysqli_query($connection,$sql);
mysqli_close($connection);

2 个答案:

答案 0 :(得分:1)

您的查询中有错误的单引号:

VALUES (0, '$firstname', '$lastname', '$username', '$email', '$password)'";
                                                                        ^^^

试试这个:

VALUES (0, '$firstname', '$lastname', '$username', '$email', '$password')";

答案 1 :(得分:0)

javascript和ajax中的所有看起来都很好(至少在没有看到html源代码的情况下也是如此。

但是你至少有一个php错误; mysql_connect_errno不存在,不会根据mysqli连接器调用。

所以试试这个:

$firstname = $_POST['firstname_php'];
$lastname = $_POST['lastname_php'];
$username = $_POST['username_php'];
$email = $_POST['email_php'];
$password = $_POST['password_php'];

echo "$firstname";
// Create connection
$connection = mysqli_connect("localhost","root","root","MyDatabase");
// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}


$sql = "INSERT INTO users (user_id, user_firstname, user_lastname, user_username, user_email, user_password) VALUES (0, '$firstname', '$lastname', '$username', '$email', '$password')";
$result = mysqli_query($connection,$sql);
mysqli_close($connection);

我没有使用mysqli连接器,但除此之外它对我来说很好。如果它仍然无法正常工作,我建议启用完整的php调试信息 - 例如将其添加到php文件的顶部:

ini_set("display_errors", "1");
error_reporting(E_ALL);
编辑:正如汉诺莱所说,你在错误的地方也有一个单引号。 (在我的示例代码中修复)