【发布时间】:2010-04-23 02:59:48
【问题描述】:
下面的代码可以将文件中的记录插入 MySQL,但只有当文件中的列已经按照与数据库中相同的方式排序时,它才能正确执行此操作。我希望用户能够选择与其文件中每一列对应的下拉列表,以将其与数据库中的列相匹配(数据库具有电子邮件地址、名字、姓氏)。我不知道如何做到这一点。有什么想法吗?
<?php
$lines =file('book1.csv');
foreach($lines as $data)
{
list($col1[],$col2[],$col3[])
= explode(',',$data);
}
$i = count($col1);
if (isset($_POST['submitted'])) {
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', 'password');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'csvimport');
// Make the connection:
$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
for($d=1; $d<$i; $d++) {
$q = "INSERT into contacts (email, first, last) VALUES ('$col3[$d]', '$col1[$d]', '$col2[$d]')";
$r = @mysqli_query ($dbc, $q);
}
}
echo "<form action =\"handle2.php\" method=\"post\">Email<br />
<select name =\"email\">
<option value='col1'>$col1[0]</option>
<option value='col2'>$col2[0]</option>
<option value='col3'>$col3[0]</option>
</select><br /><br />
First Name <br />
<select name=\"field2\">
<option value='col1'>$col1[0]</option>
<option value='col2'>$col2[0]</option>
<option value='col3'>$col3[0]</option>
</select><br /><br />
Last Name <br />
<select name=\"field3\">
<option value='col1'>$col1[0]</option>
<option value='col2'>$col2[0]</option>
<option value='col3'>$col3[0]</option>
</select><br /><br />
<input type=\"submit\" name=\"submit\" value=\"Submit\" />
<input type=\"hidden\" name=\"submitted\" value=\"TRUE\" />
</form>";
?>
【问题讨论】:
-
就目前而言,您的 .csv 文件已经在服务器上,并且早在显示列选择表单之前就已解析/插入到 mysql 中。是否允许用户上传自己的文件?否则这将是一个毫无意义的练习。
标签: php mysql dynamic-data