【发布时间】:2011-02-06 01:24:27
【问题描述】:
我有一个 PHP 2D 数组,有很多键,每个键都有一个值,我需要把它放到 MySQL 数据库中。
该数据库有 8 个字段。例如。 Field1、Field2、Field3 等值等等。
我知道第 1、第 9、第 17、第 26 个值等需要插入语句,中间值将是更新语句。
最好的方法是什么?
【问题讨论】:
标签: php mysql database arrays insert
我有一个 PHP 2D 数组,有很多键,每个键都有一个值,我需要把它放到 MySQL 数据库中。
该数据库有 8 个字段。例如。 Field1、Field2、Field3 等值等等。
我知道第 1、第 9、第 17、第 26 个值等需要插入语句,中间值将是更新语句。
最好的方法是什么?
【问题讨论】:
标签: php mysql database arrays insert
我认为你应该保留最后插入的行的db id,以及该行中有多少字段是空闲的。
这应该允许您在将新数据放入数据库时进行适当的更新和/或插入。
要将数组拆分为多个部分,您可以使用 array_slice() array_splice() 和 array_chunk() 函数。
【讨论】:
$records = array_chunk($yourArray);
foreach($records as $record)
{
$record = array_map("mysql_real_escape_string", $record);
$q = 'INSERT INTO `yourTable` VALUES
'.$record[0].',
'.$record[1].',
'.$record[2].',
'.$record[3].',
'.$record[4].',
'.$record[5].',
'.$record[6].',
'.$record[7].',
';
$res = mysql_query($q);
}
【讨论】:
我有一个 PHP 2D 数组,有很多键,每个键都有一个值,我需要把它放到 MySQL 数据库中。
听起来很奇怪——PHP 不做二维数组。只有嵌套数组。
我知道第 1、9、17、26 个值等需要插入语句
我认为这意味着您没有二维数组 - 您有一个映射到非嵌套 PHP 数组的二维数据集....在这种情况下:
for ($x=0; $x<count($data)/8; $x+=8) {
$qry="INSERT INTO sometable (f1, f2, f3,f4,f5,f6,f7,f8) VALUES (";
$join='';
for ($y=0; $y<8; $y++ ) {
$qry.=$join . prep_val($data[$x+$y]);
$join=',';
}
mysql_query($qry);
}
(其中 prep_val 包含字符串并转义元字符)
C.
【讨论】:
array_chunk() 如果我正确回答了这个问题,可能的答案。
然后就是这样
foreach ($chunks as $row) {
array_map $row with mysql_real_escape_string
implode to get VALUES clause
INSERT
}
但是真正的数组示例可以为您自己和其他人节省大量时间
说,如果你想保存键而不是值,必须先调用array_reverse。
【讨论】:
最简单的理解是使用计数器。喜欢:
$cc=0;
while(...){ // Whatever your finished condition is
if($cc==0){
//INSERT
}else{
//UPDATE
}
$cc++;
if($cc==8) $cc=0;
}
【讨论】: