从csv文件中读取第一行并根据它在mysql中自动创建表(csv文件字段)。寻找PHP脚本? 我试过这个
<?php
$arr = array(array(),array());
$num = 0;
$row = 0;
$handle = fopen("./contacts.csv", "r");
while($data = fgetcsv($handle,1000,",")){
$num = count($data);
for ($c=0; $c < $num; $c++) {
$arr[$row][$c] = $data[$c];
}
$row++;
}
$con = mysql_connect('localhost','root','');
mysql_select_db("excel_database",$con);
for($i=1; $i<$row; $i++){
$sql = "INSERT INTO contacts VALUES ('".$arr[$i][0]."','".$arr[$i][1]."','".$arr[$i][2]."','".$arr[$i][3]."','".$arr[$i][4]."','".$arr[$i][5]."')";
mysql_query($sql,$con);
}
?>
答案 0 :(得分:4)
稍微修改你的脚本,这应该可以解决问题并根据csv标题行创建表:
$sql[] = array();
$handle = fopen($file, "r");
$header = fgetcsv($handle,1000,",");
if($header){
$header_sql = array();
foreach($header as $h){
$header_sql[] = '`'.$h.'` VARCHAR(255)';
}
$sql[] = 'CREATE TABLE `imported_csv` ('.implode(',',$header_sql).')';
while($data = fgetcsv($handle,1000,",")){
$sql[] = "INSERT INTO imported_csv VALUES ('".implode("','",$data)."')";
}
}
$con = mysql_connect('localhost','root','');
mysql_select_db("excel_database",$con);
foreach($sql as $s){
mysql_query($s,$con);
}
答案 1 :(得分:3)
这是一个单一功能,为您提供一个数组:fgetcsv请参阅该页面上的示例#1以获取基本脚本。
这个表只是循环内容......
啊哈,我终于在mysql中根据它自动解析了表格并理解了。抱歉。 fgetcsv将返回一个数组;只需使用该数组来创建您的sql命令。例如'...values (' . implode(',', $results_of_fgetcsv) . ')...'
答案 2 :(得分:3)
这是你问题的一半。
<?php
$row = 1;
if (($handle = fopen("ab.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
答案 3 :(得分:2)
如果要在html中可视化表数据,可以使用PHP创建表,将csv中的数据作为标题读取第一行。我使用这个功能你可以试试!
function build_table($source){
$data = array();
$file = fopen($source, 'r');
while (($result = fgetcsv($file,0,";")) !== false){$data[] = $result;}
fclose($file);
//Now process the data and create table
$data_rows=@count($data[0]); //from the first row get the header name
$colum_trail="";
//Create the header part
for($i=0; $i<$data_rows;$i++){
$cell=$data[0][$i]; //each header
$colum_trail.="<th>$cell</th>";
}
////Create the table body contents
$table_cells="";
for($i=1; $i<count($data);$i++){
$table_cells.="<tr>";
$cell=$data[$i];
foreach($cell as $cell_value){
$cell_v=$cell_value;
$table_cells.="<td>$cell_v</td>";
}
$table_cells.="</tr>";
}
$table="<table><tr>$colum_trail</tr>$table_cells</table>";
echo "<style>td {border-bottom: 2px solid black;}</style>";
echo $table;
}
然后您只需要在该代码之后调用该函数:
build_table("source.csv"); //then call the file you want to create table
答案 4 :(得分:1)
array_shift(file('filename.csv'))
将为您提供文档filename.csv