【问题标题】:why don't save data from mysql [closed]为什么不从mysql保存数据[关闭]
【发布时间】:2019-08-04 03:15:31
【问题描述】:

嘿,我想用这段代码(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")));


?>

然后

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

【问题讨论】:

  • 你有什么错误吗?
  • 这可能会导致问题,date("Y-md")date 列的数据类型是什么?我想这里是错字..不是吗?试试date("Y-m-d")
  • devpro yes is column datatype is datetime
  • 您发送 json:{"num": "4.58"} - 看不到您在 PHP 中访问 json 参数的位置
  • DATETIME 将被接受 Y-m-d 而不是 Y-md

标签: javascript php mysql ajax server


【解决方案1】:

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

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

请计算定义的列数以及您尝试插入的值的数量。显然,这两者应该匹配。

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

【讨论】:

    【解决方案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 注入问题;您应该改用带有绑定参数的预处理语句。

    【讨论】:

    • 未定义变量:第 11 行 C:\xampp\htdocs\sa.php 中的 POST
    • @hamid 这是我的错字,正确的变量是$_POST
    • 注意:未定义索引:第 13 行 C:\xampp\htdocs\sa.php 中的 json
    • 昨晚是对的,但现在……
    猜你喜欢
    • 2018-08-03
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 2020-09-26
    • 2014-06-16
    • 2021-03-24
    相关资源
    最近更新 更多