Javascript ajax可以工作,但它不能';t插入我的sql查询(js/php)

Javascript ajax可以工作,但它不能';t插入我的sql查询(js/php),javascript,php,ajax,Javascript,Php,Ajax,我不知道ajax是否可以这样工作,但数据不会添加到我的mysql数据库中。我检查了chrome浏览器中的“网络”选项卡,发现数据已转发。 我试过这样做 script.js: $(".btn_ranking").click(function (e) { e.preventDefault(); var name = localStorage.getItem('name'); var time = localStorage.getItem('timer_end');

我不知道ajax是否可以这样工作,但数据不会添加到我的mysql数据库中。我检查了chrome浏览器中的“网络”选项卡,发现数据已转发。 我试过这样做

script.js:

$(".btn_ranking").click(function (e) {
    e.preventDefault();

    var name = localStorage.getItem('name');
    var time = localStorage.getItem('timer_end');

    $.ajax({
        url: "php/file.php",
        method: "POST",
        data: { "name": name, "time": time }
    })
});
file.php:

<?php

require_once "connect.php";

$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);

$name = $_POST['name'];
$time = $_POST['time'];

if ($polaczenie->connect_errno != 0) {
    echo "Error: " . $polaczenie->connect_errno;
} else {

    if ($rezultat = @$polaczenie->query("INSERT INTO ranking (id, name, time) VALUES (NULL, $name, $time)")) {
        echo "ok";
    }
}

?>

首先,最好使用PrepareStatement传递参数,而不是将它们直接写入sql

对于当前代码,请尝试更改为以下代码

if ($rezultat = @$polaczenie->query("INSERT INTO ranking (id, name, time) VALUES (NULL, '".$name."', '".$time."')")) {
    echo "ok";
}

你应该像下面那样尝试

$(".btn_ranking").click(function (e) {
    e.preventDefault();

    var name = localStorage.getItem('name');
    var time = localStorage.getItem('timer_end');

    $.ajax({
        url: "php/file.php",
        method: "POST",
        data: { name: name, time: time } //Remove double quote
    })
});

$name应该用引号括起来,对吗?是一个字符串吗?看看
@
s,你得到了什么?如果您在站点上显示错误时遇到问题,请关闭错误显示,不要仅抑制错误。您仍然应该记录它们,以便知道会发生什么。您对SQL注入持开放态度,
$name,
需要被引用。这两个问题都可以通过参数化查询来解决。skorzystaj PDOZ删除
@
符号-可能有错误隐藏在那里,但您正在使其静音?