$sql = "INSERT INTO test (" . implode(", ", $header) . ") VALUES " . implode(", ", $values);修改此语句,实现在插入数据时忽略test表的id列,从第二列开始插入数据
时间: 2023-07-19 15:14:30 浏览: 45
要实现在插入数据时忽略test表的id列,从第二列开始插入数据,可以在implode函数中将$header数组的第一个元素(即id列)去掉。同时,需要将$values数组从第二个元素开始拼接,以实现从第二列开始插入数据。具体的代码如下:
```php
// 读取转换后的csv文件
$csv_data = array_map('str_getcsv', file('your_csv_file.csv'));
// 插入数据
foreach ($csv_data as $data) {
// 创建$values数组,忽略id列,从第二列开始插入数据
$values = array_slice($data, 1);
foreach ($values as &$value) {
$value = mysqli_real_escape_string($conn, $value);
$value = "'$value'";
}
unset($value);
// 执行插入操作
$sql = "INSERT INTO test (" . implode(", ", array_slice($header, 1)) . ") VALUES (" . implode(", ", $values) . ")";
if ($conn->query($sql) === TRUE) {
echo "新记录插入成功";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
// 关闭连接
$conn->close();
```
在上述代码中,我们使用了array_slice函数从第二个元素开始截取$data数组,创建了一个新的$values数组。然后,对于$values数组中的每个元素,我们先使用mysqli_real_escape_string函数进行转义,然后再添加单引号,最后使用implode函数将$values数组拼接成一个字符串。在拼接$sql语句时,我们使用了array_slice函数从第二个元素开始截取$header数组,忽略了id列。
需要注意的是,上述代码中使用了引用变量&$value来修改$values数组中的元素,以便在将每个元素添加单引号之前使用mysqli_real_escape_string函数进行转义。