php - PHP:将带有单独行的数组作为值插入数据库
问题描述
我正在通过 ajax 将一个数组传递给 PHP,我想将它们作为一行插入到 mysql 中。有没有办法我可以做到这一点?
Javascript:
var textarray = [];
for(var i = 0; i<data.length; i++){
var sms = $('#TxtMessage').val();
var brand = data[i].brand;
var type = data[i].type;
var csvLine = `${sms}, ${brand}, ${type} `;
textarray.push(csvLine)
}
var resultCSV = textarray.join('\n');
//Pass the array to PHP
$.ajax({
type: "POST",
url: "../php/functions.php",
data: { results: resultCSV },
success: function(data) {
console.log(data);
}
});
在 PHP 中,我想将每一行插入 mysql 数据库。我传递给 PHP 的值如下所示
sample text, Toyota, 30/10/2008 10:00:00
sample text, Nissan, 17/02/2021 14:00:00
所以文本的每一行都应该作为一行进入数据库。
PHP:
$myArray = $_POST['results'];
$columns = implode(" ",array_keys($myArray));
$escaped_values = array_map('mysql_real_escape_string', array_values($myArray));
$values = implode(", ", $escaped_values);
$sql = "INSERT INTO `databasetable`($columns) VALUES ($values)";
解决方案
人们通常做的是使用 json 之类的东西来编码和解码他们传递的数据。这比你正在做的要容易得多。
你编码喜欢
$myVar = json_encode($dataArray);
你解码像
$myReturn = json_decode($_POST['csvDataArray']);
如果要将 csv 转换为数组,可以使用
$mycsvArray = array_map("str_getcsv", explode("\n", $csv));
您可能需要使用stripslashes。
然后就像循环构建查询一样简单。像这样的东西。
$myQuery = array();
foreach($myCSVArray as $rowArray) {
$myQuery[] = INSERT INTO `databasetable`($columns) VALUES ($escaped_values);
}
推荐阅读
- python-3.x - 忽略pytest中的函数
- python - 第 34 行的 elif 语句出现错误。它说语法无效。我尝试将缩进和 elif 语句更改为 if else
- netsuite - SUITETALK- Netsuite searchAdvanced 以基础货币提供线路价格
- python - 如何将相对路径视为 Django 中的完整 URL?
- apache-spark - Spark 读取 delta 表,得到 NoSuchObjectException(message:There is no database named delta) 错误
- css - 如何从我的网站顶部栏中删除这个顽固的搜索图标?
- php - wp-includes/formatting.php 上出现意外的字符和语法错误
- javascript - 如何使用reduce方法仅获取每种类型的最大值(在二维数组中)
- cmake - CMakeLists.txt 文件中的指令顺序是否重要?
- java - 如何在 Windows 10 中使 drawString 更快?