我正在尝试导入CSV文件。由于我们使用的程序,第一行基本上是我想要跳过的所有标题,因为我已经将自己的标题放在via HTML中。如何让代码跳过CSV的第一行? (strpos命令用于切断所有行中的第一个字段。)
<?php
$row = 1;
if (($handle = fopen("ptt.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
if(strpos($data[$c], 'Finished') !== false) {
$c++;
echo "<TR> <TD nowrap>" . $data[$c] . "</ TD>"; }
Else{
echo "<TD nowrap>" . $data[$c] . "</ TD>";
}
}
}
fclose($handle);
}
?>
答案 0 :(得分:47)
不是使用if条件来检查它是否是第一行,更好的解决方案是在while循环开始的行之前添加额外的代码行,如下所示:
....
.....
fgetcsv($handle);//Adding this line will skip the reading of th first line from the csv file and the reading process will begin from the second line onwards
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
.......
.......
就这么简单......
答案 1 :(得分:27)
正如您要跟踪行号一样,您可以使用continue
跳过第一行的其余循环。
例如,在while循环的开头添加它(在$num = count($data)
上方):
if($row == 1){ $row++; continue; }
还有其他方法可以做到这一点,但只要确保当你继续时,$row
仍在增加,否则你将获得无限循环!
答案 2 :(得分:2)
把它放在你的while循环中:
if ($row == 1) continue;
答案 3 :(得分:1)
请使用以下代码行
$flag = true;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if($flag) { $flag = false; continue; }
//your code for insert
}
将flag变量设为true并将其设置为false将跳过CSV文件的第一行。这很简单,易于实现。
答案 4 :(得分:0)
在while
:
$row++;
循环的正文中添加此内容
if ($row == 1) {
continue;
}
答案 5 :(得分:0)
$count = 0;
while (($fields = fgetcsv($handle, 0, ",")) !== FALSE) {
$count++;
if ($count == 1) { continue; }
答案 6 :(得分:0)
这对我有用:
<div class="wrapper">
<div class="videoholder">
<video src="https://www.marketing-people.com/wp-content/uploads/2017/02/bakerbox-mockup.mp4" class="myvideo"></video>
</div>
</div>
答案 7 :(得分:-2)
使用此代码
// mysql hostname
$hostname = 'localhost';
// mysql username
$username = 'root';
// mysql password
$password = '';
if (isset($_FILES['file']))
{
// get the csv file and open it up
$file = $_FILES['file']['tmp_name'];
//$handle is a valid file pointer to a file successfully opened by fopen(), popen(), or fsockopen().
$handle = fopen($file, "r");
try {
// Database Connection using PDO
$dbh = new PDO("mysql:host=$hostname;dbname=clasdb", $username, $password);
// prepare for insertion
$STM = $dbh->prepare('INSERT INTO statstrackertemp (ServerName, HiMemUti, AvgMemUti, HiCpuUti, AvgCpuUti, HiIOPerSec, AvgIOPerSec, HiDiskUsage, AvgDsikUsage) VALUES (?, ?, ?, ?, ?,?, ?, ?, ? )');
if ($handle !== FALSE)
{
// fgets() Gets a line from file pointer and read the first line from $handle and ignore it.
fgets($handle);
// created loop here
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE)
{
$STM->execute($data);
}
fclose($handle);
}
}
catch(PDOException $e)
{
die($e->getMessage());
}
echo 'Data imported';
}
else
{
echo 'Could not import Data';
}
?>