【问题标题】:How to save multi array to database using ajax and php如何使用 ajax 和 php 将多数组保存到数据库
【发布时间】:2014-09-22 09:24:23
【问题描述】:

我想将从 Ajax 传递到 PHP 的数组保存到表的不同列中。

以下是 Ajax 发送给 PHP 的数组:

点击保存按钮后,我在浏览器网络标题上看到了这个。

表单数据:

tableArray[0][]:awdawd
tableArray[0][]:awdawd
tableArray[0][]:Male
tableArray[0][]:<button class='delete'>Delete</button>
tableArray[1][]:awdaw
tableArray[1][]:awdwa
tableArray[1][]:Female
tableArray[1][]:<button class='delete'>Delete</button>

我的问题是单击保存按钮后,它只将数组的名称部分保存到表中:

脚本:

$("#saveTable").click(function(){
 $.ajax(
    {
    url: "saveTable.php",
    type: "POST",
    data: { tableArray: dataSet},
    success: function (result) {

    }
});  
});

saveTable.php

<?php
    error_reporting(-1);
    ini_set('display_errors', 'On');

    $host = "localhost";
    $user = "root";
    $pass = "";
    $db = "test";

    $dbc = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);
    $dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $tableArray = $_REQUEST['tableArray'];

    foreach( $tableArray As $v){
    $sql = "INSERT INTO viewTables (name, age, gender, action) VALUES ('$v[0]','$[1]','$[2]','$[3]')";
    $query = $dbc->prepare($sql);
    $query->execute();
    }
?>

【问题讨论】:

    标签: php jquery html ajax pdo


    【解决方案1】:

    @Sadiq 指出了问题,这只是一个错字。但是,我建议您实际上以更好的方式使用准备好的语句,只准备一次语句并使用参数来防止 SQL 注入。

    $sql = "INSERT INTO viewTables (name, age, gender, action) VALUES (:name, :age, :gender, :action)";
    try {
        $sth = $dbc->prepare($sql);
        foreach( $tableArray As $v){
            // bind parameter values
            $sth->bindValue(':name', $v[0], PDO::PARAM_STR); 
            $sth->bindValue(':age', $v[1], PDO::PARAM_STR);
            $sth->bindValue(':gender', $v[2], PDO::PARAM_STR);
            $sth->bindValue(':action', $v[3], PDO::PARAM_STR);      
            $sth->execute();
        }
    } catch (PDOException $e) {
        // something went wrong
        // log an error or whatever
    }
    

    【讨论】:

      【解决方案2】:
      $sql = "INSERT INTO viewTables (name, age, gender, action) VALUES ('$v[0]','$[1]','$[2]','$[3]')";
      

      应该是

      $sql = "INSERT INTO viewTables (name, age, gender, action) VALUES ('$v[0]','$v[1]','$v[2]','$v[3]')";  // Added array name for the last three values
      

      【讨论】:

        猜你喜欢
        • 2016-06-14
        • 2018-02-17
        • 1970-01-01
        • 1970-01-01
        • 2012-09-29
        • 2014-09-25
        • 2011-09-10
        • 2014-02-14
        • 2014-01-17
        相关资源
        最近更新 更多