为什么不保存来自MySQL的数据

时间:2019-03-13 12:30:46

标签: javascript php mysql ajax server

嘿,我想使用此代码(js)从网站抓取数据

var i = 0
var oldValue = -1

var interval = setInterval(get, 3000);

function get(){
var x= $($('.table-body')[1]).find('.h-col-1')
if(i!=5){
if(oldValue != x){
    oldValue = $(x[1]).text()
    console.log($(x[1]).text())
    ++i
    sendPost($(x[1]).text())
  }
}else clearInterval(interval)
}

function sendPost(par) {
    var te= $.ajax({
        type: "POST",
        dataType: 'jsonp',
        url: 'http://localhost/sa.php',
        data: {json:JSON.stringify({
            num : par
        })  },
    }).done(function( data ) {
        console.log("done");
    })
    .fail( function(xhr, textStatus, errorThrown) {
        console.log(xhr.responseText);textStatus
    });
    console.log(te)

从本地主机发送数据并保存在我的sql和此php代码中

sa.php

<?php
header('Access-Control-Allow-Origin: *');
$sitename = "http://localhost/";
$hostname = "localhost";
$username = "root";
$password = "";
$database = "db";
$connect = mysqli_connect($hostname, $username, $password, $database);
$insert = "INSERT INTO main(number, time, date) VALUES ('%s','%s','%s','')";
$data = json_decode(file_get_contents("php://input"), true);
$result = mysqli_query($connect,sprintf($insert,$data['num'] ,date("H:i:s"),date("Y-m-d")));


?>

然后

pic success

从本地服务器的js请求成功发送,为什么不保存在我的sql上?

2 个答案:

答案 0 :(得分:3)

我认为答案在于您的插入查询:

$insert = "INSERT INTO main(number, time, date) VALUES ('%s','%s','%s','')";

请计算定义的列数和您要插入的值数。显然,这两个应该匹配。

如果您想弄清楚MySQL查询失败的原因,只需打印或记录错误: http://php.net/manual/en/mysqli.error.php

答案 1 :(得分:2)

您应该检查file_get_contents("php://input")的值。

在发送键值对时:

    data: {json:JSON.stringify({
        num : par
    })  },

您应该使用$_POST['json']获取数据。

所以:

$data = json_decode($_POST['json'], true);

另一种方法是,更改javascript而不是php,就像这样:

data: JSON.stringify({
        num : par
    }),

但是,老实说,我不知道jQuery如何处理这些数据,因此可能需要进行一些调整。

除此之外,您还有一个sql注入问题;您应该使用带有绑定参数的预备语句。