以下是我提取excel表格中的数据的代码,我已提取数据但无法将其插入我的数据库
if($_FILES["file"]["size"] > 0)
{
$file = fopen($filename, "r");
//$sql_data = "SELECT * FROM prod_list_1 ";
while (($Data = fgetcsv($file, 10000, ",")) !== FALSE)
{
echo $Data[0];
$sql = "INSERT into tbl_userdata ('name','svp_name','mobileno','email') values ('$Data[0]')";
}
fclose($file);
但查询无效。
以下是$Data[0]
答案 0 :(得分:0)
你还必须执行sql:但跳过标题。
尝试:$mysqli->query($sql);
或您正在使用的那个,如mysql。
注意:如果您的文件是.csv以“,”单独保存,则此代码将起作用。
$file = fopen($filename, "r");
$headers = fgetcsv($file);
while (($Data = fgetcsv($file, 10000, ",")) !== FALSE){
/* echo "<pre>";
print_r($Data);
echo "</pre>"; */
$sql = "INSERT into tbl_userdata ('name','svp_name','mobileno','email') values ('$Data[0]','$Data[1]','$Data[2]','$Data[3]')";
echo $sql;
}
答案 1 :(得分:0)
首先,$ Data是您的总数据集,如果您有数据集,则包括标题。 所以你必须使用foreach或for循环遍历$ Data,例如:
$num = count($Data);
for ($c=0; $c < $num; $c++) {
echo $Data[$c] . "<br />";
}
如果这是excel文件中的标题,则需要跳过第一次迭代。
之后,$ Data [$ c] [0]是名称,$ Data [$ c] [1]是svp_name等。 您的查询将如下所示:
$sql = "INSERT into tbl_userdata ('name','svp_name','mobileno','email') values ('$Data[$c][0]', '$Data[$c][1]', '$Data[$c][2]', '$Data[$c][3]')";
不要忘记实际执行您的查询,您只是定义查询本身而不是执行它。
组合所有内容将在while循环中提供以下代码:
$num = count($Data);
for ($c=0; $c < $num; $c++) {
$sql = "INSERT into tbl_userdata ('name','svp_name','mobileno','email') values ('$Data[$c][0]', '$Data[$c][1]', '$Data[$c][2]', '$Data[$c][3]')";
mysql_query($sql); //if you are using mysql
$mysqli->query($sql); //if you are using mysqli, but then you should use a prepared statement
}
编辑: 查看您提供的excel文件,您需要一个PHPExcel阅读器脚本,因为这不是逗号分隔的csv文件。尝试使用逗号分隔符将excel文件保存为csv文件。
如果您想阅读实际的Excel文件,请尝试使用:
https://phpexcel.codeplex.com/
答案 2 :(得分:0)
将'http://gksfapp.in/backend/19-Nov-2014%2002-31-34%20pm.xls'保存到test.csv。
$host = "localhost";
$user = "root";
$pass = "";
$db_name = "test";
$con = mysql_connect($host, $user, $pass);
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db($db_name, $con);
$file = fopen('test.csv', "r");
while (($Data = fgetcsv($file, 10000, ",")) !== FALSE) {
$sql = "INSERT into tbl_userdata (name,svp_name,mobileno,email) values ('$Data[0]','$Data[1]','$Data[2]','$Data[3]')";
mysql_query($sql);
}
fclose($file);
使用您的数据库凭据和表名更改上述代码。添加适当的异常处理。