我有一个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'].')';
}
?>
它不会向我发送错误,只是不起作用。
答案 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:将字符串值插入数据库时,您缺少逗号。