Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将JavaScript数组数据插入MySQL数据库的问题_Php_Jquery_Ajax_Mysqli - Fatal编程技术网

Php 将JavaScript数组数据插入MySQL数据库的问题

Php 将JavaScript数组数据插入MySQL数据库的问题,php,jquery,ajax,mysqli,Php,Jquery,Ajax,Mysqli,请看一下下面的代码片段,并告诉我为什么无法将数组值插入数据库。在Js文件中,我有: <script> var arr = ["foo", "2015/11/04", "Jill", "Smith", "60"]; var serializedArr = JSON.stringify( arr ); $("#loader").on("click", function(){ var upload = $.ajax({

请看一下下面的代码片段,并告诉我为什么无法将数组值插入数据库。在Js文件中,我有:

 <script>
        var arr = ["foo", "2015/11/04", "Jill", "Smith", "60"];
        var serializedArr = JSON.stringify( arr );
      $("#loader").on("click", function(){
        var upload = $.ajax({
                            type: "POST",
                            url: "loader.php",
                            data: {array:serializedArr},
                            cache: false,
                            beforeSend: function() {
                            }
        });
});


但我无法加载数据,甚至页面上没有错误消息

问题在于您是JSON。在通过AJAX请求发送数组之前,先对数组进行字符串化。这意味着array=“[“foo”、“2015/11/04”、“Jill”、“Smith”、“60”]”,从技术上讲,这不是一个有效的JSON对象

尝试将数组包装在js对象中,然后将其字符串化。比如

var arr = {data: ["foo", "2015/11/04", "Jill", "Smith", "60"] };
然后试试看

$array = json_decode($_POST['array']).data;
  • 建立连接时,请使用定义的常量而不是字符串
  • 使用准备好的语句,而不是在查询中传递变量
  • 如中所述,您正在尝试访问字符串变量的索引(因为发送的数据是JSON字符串)
  • 在ajax调用中使用
    success
    error
    句柄,将结果/错误输出到控制台
  • 因此,在处理接收到的数据之前,需要对其进行
    json\u解码




    
    var arr=[“foo”、“2015/11/04”、“吉尔”、“史密斯”、“60”];
    $(“#loader”).load('load.php',{arr:arr});
    
    load.php:

     <?php
           $arr = $_POST['arr'];
           $insert_row = $mysqli->query("INSERT INTO `models` (name, date, nip, tip, age)
                          VALUES($arr[1], $arr[2], $arr[3], $arr[4], $arr[5])");
        ?>
    
    
    

    您可以在数据库中添加类似的值。

    我希望
    $mysqli=newmysqli('DB_主机'、'DB_用户'、'DB_密码'、'DB_名称')到fail@hjpotter92,谢谢,但你的意思是什么?在发出ajax请求时,你在控制台中看到了什么吗?正如@hjpotter92所说,对mysqli的调用使用的是字符串,而不是之前定义的constantsNo,控制台中没有任何内容!当您处理请求时,
    $\u POST['array']
    中到底有什么内容?谢谢您,但我在这里感到困惑!那么关于
    数据:{array:serializedArr},
    呢?谢谢hjpotter92,这是可行的,但这里有一个问题!代码正在为
    name
    插入
    0
    ,该名称必须是
    foo
    ,但其他名称是correct@Behseini放置一个
    var\u转储($array)并检查您得到的结果。但我正在发布数据!那么如何使用
    var\u dump($array)
    console.log
    放入
    $.ajax
    调用的成功处理程序中。我真的很想学习这个调试!那么
    console.log
    什么?
    var arr = {data: ["foo", "2015/11/04", "Jill", "Smith", "60"] };
    
    $array = json_decode($_POST['array']).data;
    
    $array = json_decode( $_POST['array'] );
    $mysqli = new mysqli( DB_HOST, DB_USER, DB_PASSWORD, DB_NAME );
    
    $insert_row_stmt = $mysqli->prepare( "INSERT INTO `models` (name, date, nip, tip, age) VALUES(?, ?, ?, ?, ?)");
    $insert_row_stmt->bind_param( 'ssssi', 
        $array[0],
        $array[1],
        $array[2],
        $array[3],
        $array[4]
    );
    $insert_row = $insert_row_stmt->execute();
    
    var upload = $.ajax({
        type: "POST",
        url: "loader.php",
        data: {array:serializedArr},
        cache: false,
        success: function(d) {
            console.log(d);
        }
    });
    
    <div id="loader"></div>
    <script src="jquery.min.js"></script>
    <script>
        var arr = ["foo", "2015/11/04", "Jill", "Smith", "60"];
        $("#loader").load('load.php',{arr:arr});
    </script>
    
     <?php
           $arr = $_POST['arr'];
           $insert_row = $mysqli->query("INSERT INTO `models` (name, date, nip, tip, age)
                          VALUES($arr[1], $arr[2], $arr[3], $arr[4], $arr[5])");
        ?>