【问题标题】:Pass Jquery Array to MySql将 Jquery 数组传递给 MySql
【发布时间】:2016-05-04 21:38:42
【问题描述】:

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

我正在为宾果游戏编写代码。我的 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 方面得到注意,要么只得到“数组”

这是我的 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,请使用print_r($DealerNums);。我还建议在存储在数据库中时使用数组的json_encodeserialize
  • 您需要将该数组转换为 JSON。试试JSON.stringify(drawArray)

标签: php jquery mysql arrays


【解决方案1】:

$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')";

【讨论】:

    【解决方案2】:

    感谢您推荐 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 页面中使用数组,如下所示:

     <?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>';
                        }
                    }
                ?>
    

    【讨论】:

    • 不客气。我发布了一个答案。我很高兴我能提供帮助。如果您有任何其他问题,请告诉我。
    【解决方案3】:

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

    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"
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 2018-07-25
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      相关资源
      最近更新 更多