gpt4 book ai didi

php - 当插入的值与表中的列数不匹配时,使用 PHP 将数据插入到 MySQL 表中

转载 作者:行者123 更新时间:2023-11-29 16:40:00 26 4
gpt4 key购买 nike

我有一个包含超过 100 列的 mysql 表,但在本例中我将其缩短为 6 列:

col0(autoincrement), col1, col2, col3, col4, col5, col6

我从外部源获取数据(下面的 $csvcontent),并且该数据每行包含 6 个或更少的值。我想使用 PHP 将这些值读取到数组中,并将数组值插入到我的 mysql 表中。

$csvcontent = file from external source
$fieldseparator = ",";
$lineseparator = "\n";
$linearray = array();

foreach(explode($lineseparator,$csvcontent) as $line) {
$linearray = explode($fieldseparator,$line);
$linemysql = implode("','",$linearray);
$query = "insert into MYTABLE values('','$linemysql');";
}

假设我事先不知道 $csvcontent 中存储了多少个值,如何插入以下行?当我总是有 6 个值时,这个现有代码可以很好地工作,但当我有更少的值时,就不行了。

insert into MYTABLE values('','1','2','3','4','5','6');  //works

insert into MYTABLE values('','1','2','3','4'); //doesn't work

insert into MYTABLE values('','1','2','3','4','5'); //doesn't work

最佳答案

那么,根据 $linearray 的大小,您可以创建一个列序列并将其附加到您的插入查询中。

<?php


$columns = ['col1','col2','col3','col4','col5','col6'];

$linearray_samples = [
[1,2,3,4,5],
[1,2,3],
[1,2,3,4],
[1],
[1,2],
[1,2,3,4,5,6]
];


foreach($linearray_samples as $each_sample){
echo "(",commaSeparatedColumns($each_sample,$columns),")",PHP_EOL;
}

function commaSeparatedColumns($sample,$columns){
return implode(",",array_slice($columns,0,count($sample)));
}

代码输出:

(col1,col2,col3,col4,col5)
(col1,col2,col3)
(col1,col2,col3,col4)
(col1)
(col1,col2)
(col1,col2,col3,col4,col5,col6)

演示:https://3v4l.org/QLnFo

关于php - 当插入的值与表中的列数不匹配时,使用 PHP 将数据插入到 MySQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53399260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com