我需要在表数据库中创建一个存储csv值的表单,我刚刚开始工作的表单,但我需要按特定顺序存储值。 这是使用
的csv im但是当我运行表单时,值存储就像这样
这是我的表格
<div class="container">
<?php
if(isset($_POST['uploadBtn'])){
$fileName=$_FILES['myFile']['name'];
$fileTmpName=$_FILES['myFile']['tmp_name'];
$fileExtension=pathinfo($fileName,PATHINFO_EXTENSION);
$allowedType = array('csv');
if(!in_array($fileExtension,$allowedType)){?>
<div class="alert alert-danger">
INVALID FILE
</div>
<?php }else{
$handle = fopen($fileTmpName, 'r');
$k = 0;
$energies = [];
while (($myData = fgetcsv($handle,1000,',')) !== FALSE) {
$k++;
if ( $k > 1 ) {
$energies[] = $myData[3];
}
}
list($e1, $e2, $e3) = $energies;
$query = "INSERT INTO metlab.table (energy1, energy2, energy3) VALUES ($e1, $e2, $e3)";
$run = mysql_query($query);
if(!$run){
die("error in uploading file".mysql_error());
}else{ ?>
<div class="alert alert-success">
SUCCESS
</div>
<?php }
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<h3 class="text-center">
RESULTS
</h3></hr>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="file" name="myFile" class="form-control">
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="submit" name ="uploadBtn" class="btn btn-info">
</div>
</div>
</div>
</form>
</div>
</body>
我无法弄清楚该怎么做:/ 先谢谢
答案 0 :(得分:1)
解析CSV文件时,会逐行解析。因此,目前正在发生的是代码示例中的预期行为。
您遇到的问题是,您希望一次性将所有3 energy
个值保留在表格的一行中。
您需要先解析CSV文件,然后保留数据。像这样;
$handle = fopen($fileTmpName, 'r');
$k = 0;
$energies = [];
while (($myData = fgetcsv($handle,1000,',')) !== FALSE) {
$k++;
if ( $k > 1 ) {
// hold onto your values for later.
$energies[] = $myData[3];
}
}
// ... you can now persist them in a horizontal table.
我唯一的问题是:是否只有3&#34;能量&#34;? 4,5,6等怎么样?这会影响您的桌面设计。也许你桌子的设计是:
id | energy_type | energy_value
通过这种方式,您可以更轻松地维护新版energy_types
。
注意:请改用MySQLi或PDO。
答案 1 :(得分:0)
..............
$handle = fopen($fileTmpName, 'r');
$k = 0;
$energies = [];
while (($myData = fgetcsv($handle,1000,',')) !== FALSE) {
$k++;
if ( $k > 1 ) {
$energies[] = $myData[3];
}
}
// 1 method
// $values = join(',', $energies);
// $query = "INSERT INTO metlab.table (energy1, energy2, energy3) VALUES ($values)";
// 2 method
list($e1, $e2, $e3) = $energies;
$query = "INSERT INTO metlab.table (energy1, energy2, energy3) VALUES ($e1, $e2, $e3)";
$run = mysql_query($query);
..............