为什么不插入json数组到sql工作?

时间:2018-02-20 09:29:04

标签: javascript php jquery json

我有一个HTML表,它将数据存储到Javascript数组中,然后存储到json数组中,然后我将它发送到php文件。我的问题是我无法将这个json数组插入到sql数据库中。我有文件:index.php(HTML就在那里),database.php,main.js,jquery.js,jquery.json.php和css。

 var TableData;
    TableData = storeTblValues()
    TableData = $.toJSON(TableData);
    function storeTblValues()
    {
        var TableData = new Array();
    
        $('#table1 tr').each(function(row, tr){
            TableData[row]={
                "Id" : $(tr).find('td:eq(0)').text()
                , "Name" :$(tr).find('td:eq(1)').text()
            }
        });
        return TableData;
    }
    $.ajax({
       type: "POST",
       url: "database.php",
       data: "pTableData=" + TableData,
       success: function(msg){
           console.log('',15); //this shows in console when I load my HTML-file
       }
    
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="table1">
      <tr id="tr1">
        <td id="tdd1">1</td>
        <td id="td1">Add the name</td>
      </tr>
    </table>

PHP-代码:

<?php
$servername="localhost";
$username="root";
$password="";
$database="project";
$conn=mysqli_connect($servername, $username, $password, $database);

$tableData = stripcslashes($_POST['pTableData']);
$tableData = json_decode($tableData,TRUE);
foreach($tableData as $item) {
       $sql='INSERT INTO projects (Id, Name)
       VALUES ('.$item['Id'].', '.$item['Name'].')';

     }
?>

它不会向我发送错误,只是不起作用。

1 个答案:

答案 0 :(得分:2)

您没有向数据库发送任何内容。您只是将值赋给变量。 要将查询发送到数据库,您需要使用mysqli_query()函数。可在此处找到文档http://php.net/manual/en/mysqli.query.php 更改它,以便将SQL发送到数据库:

foreach($tableData as $item) {
  $sql='INSERT INTO projects (Id, Name)
  VALUES ('.$item['Id'].', \''.$item['Name'].'\')';
  mysqli_query($conn, $sql);
}

另一方面,我建议你不要逐个发送所有查询,而是创建一个字符串,它将在一个查询中发送所有值。它可以这样做:

// Start of SQL
$sql = 'INSERT INTO projects(Id, Name) VALUES ';

// Loop to get all values
foreach($tableData as $item) {
  $sql .= '('.$item['Id'].', \''.$item['Name'].'\'),';
}

// Remove last comma
$sql = rtrim($sql, ',');

// Send SQL to database
mysqli_query($conn, $sql);

PS:将字符串值插入数据库时​​,您缺少逗号。