繁体   English   中英

将Jquery数组传递给MySql

[英]Pass Jquery Array to MySql

我一直在尝试在SO上给出的所有示例,这些示例将jQuery生成的数组传递给PHP以存储在MySql DB中,但是我在PHP端得到​​的只是“ Array”。

我正在为Bingo游戏编写代码。 我的jquery生成了一个名为“ drawArray”的数组,该数组应存储在我的数据库中。 例:

 ["N37", "G72", "O47", "I43", "N26", "G65", "I62", "N14", "B69", "G67", "I63", "G09", "G01", "G52", "N57", "B42", "N21", "I54", "N21", "N13", "N10", "N01", "N71", "I21", "O01", "G72", "O27", "G32", "O31", "B19", "O34", "I69", "O49", "O29", "G52", "O26", "I34", "I66", "I68", "I60"]

我已经尝试过ajax,jquery.post,无论哪种方式,我要么注意到PHP方面,要么只得到“ Array”

这是我的jQuery:

 $("#draw").click(function() {
        drawNumbers();
        console.log(drawArray);

        $.ajax({
            url: "includes/dealerpicks.php",
            type: 'POST',
            data: {'drawArray[]' : drawArray},
            dataType: "json",
            async: false
        });



    });

在我的PHP方面:

    //POST Data
$DealerNums = $_POST['drawArray'];

echo $DealerNums . "<br><br>";

$sql="INSERT INTO drawings (dealerPicks)
                VALUES
                ('$DealerNums')";

                if (!mysqli_query($conn, $sql))
                    {
                        die('Error: ' . mysqli_error($conn));
                    }
                echo "1 record added";
                mysqli_close($conn)
  ?>

因此,我当然需要将所有这些经销商编号存储到数据库中,以备以后使用宾果卡时使用。 我以为可以将它和所有图形存储到数据库中的数组中,以供稍后在PHP中引用。

为什么我只获得“ Array”作为值?

$DealerNums是一个数组。 您正在将其用作字符串。 这样的事情应该可以解决您的问题,我还要添加一些安全检查:

$DealerNums = $_POST['DealerNums'];

if (!is_array($DealerNums))
{
  // handle error 
}

//escape_string to avoid SQL injection
$DealerStr = $conn->escape_string(join(',', $DealerNums));

$sql="INSERT INTO drawings (dealerPicks)
                VALUES
                ('$DealerStr')";

感谢您推荐JSO Stringify。

我更新的代码如下:

 $("#draw").click(function() {
        drawNumbers();
        console.log(drawArray);
        var jsonDrawArray = JSON.stringify(drawArray);

        $.ajax({
            url: "includes/dealerpicks.php",
            type: 'POST',
            data: {data:jsonDrawArray},
            dataType: "json",
            async: false,
            cache: false,
        });

和我的PHP:

 //POST Data
$DealerNums = $_POST['data'];

echo $DealerNums . "<br><br>";

$sql="INSERT INTO drawings (dealerPicks)
                VALUES
                ('$DealerNums')";

                if (!mysqli_query($conn, $sql))
                    {
                        die('Error: ' . mysqli_error($conn));
                    }
                echo "1 record added";
                mysqli_close($conn)
  ?>

然后,对于下面的那些人,我稍后将在我的PHP页面中使用Array:

 <?php
                $query = "SELECT dealerPicks FROM drawings WHERE drawID = '14'";
                $result = mysqli_query($conn, $query);

                if($result === FALSE) { 
                    die(mysqli_error());
                }

                while ($row = mysqli_fetch_array($result)) {

                    $dealer = json_decode($row['dealerPicks']);

                    foreach ($dealer as $key => $value) {

                        $letter = substr($value, -3, 1);
                        $number = substr($value, -2, 2);
                        echo '<div class="dealernum"><span class="alphabet">'.$letter.'</span>'.$number.'</div>';
                    }
                }
            ?>

您发送的数据格式不正确。 像这样尝试:

function drawNumbers() {
    return ["N37", "G72", "O47", "I43", "N26", "G65", "I62", "N14", "B69", "G67", "I63", "G09", "G01", "G52", "N57", "B42", "N21", "I54", "N21", "N13", "N10", "N01", "N71", "I21", "O01", "G72", "O27", "G32", "O31", "B19", "O34", "I69", "O49", "O29", "G52", "O26", "I34", "I66", "I68", "I60"];

}
$("#draw").click(function () {
    var drawArray = drawNumbers();
    $.ajax({
        url: "submit.php",
        type: 'POST',
        data: {drawArray: JSON.stringify(drawArray)},
        dataType: "json"
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM