我正在尝试将数据从文本文件导入到我的mysql数据库表中。一些如何导入数据,但它不是正确的数据。我也得到这个错误:
未定义的偏移量:第36行的C:\ wamp \ www \ Upload \ main.php中的6 请查看我的代码。
以下是我的代码:
<?php
$con=mysqli_connect("localhost","root","","hiren");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$f = fopen("./uploads/imp.txt", "r");
while(!feof($f)) {
$data = explode(" ", fgets($f));
$id =$data[0];
$emp_id = $data[1];
$date = $data[2];
$abc = $data[3];
$def = $data[4];
$entry = $data[5];
$ghi = $data[6];
mysqli_query($con,"INSERT INTO `daily_data2` (emp_id, date, abc, def, entry, ghi)
VALUES ('$emp_id', '$date', '$abc', '$def', '$entry', '$ghi')") or die(mysql_error());
}
fclose($f);
?>
我的表:
Imp.txt文件:
答案 0 :(得分:1)
错误显示,对于某些行,第6个索引中没有可用的数据,您应该像下面的代码一样传递空字符串。 注意:希望每行使用&#34; &#34;您试图爆炸但这不是一个好习惯,因为如果任何数据包含也被视为新行的空间。 像这样更新您的代码:
$data = explode(" ", fgets($f));
$id = !empty($data[0]) ? $data[0] : '';
$emp_id = !empty($data[1]) ?$data[1] : '';
$date = !empty($data[2]) ? $data[2] : '';
$abc = !empty($data[3]) ? $data[3] : '';
$def = !empty($data[4]) ? $data[4] : '';
$entry = !empty($data[5]) ? $data[5] : '';
$ghi = !empty($data[6]) ? $data[6] : '';
答案 1 :(得分:1)
你必须索引的字段多于他们得到的字段
您索引7个字段,但只有6个字段
$data = explode(" ", fgets($f)); // this give you 6 value but you index 7
$id =$data[0];
$emp_id = $data[1];
$date = $data[2];
$abc = $data[3];
$def = $data[4];
$entry = $data[5];
$ghi = $data[6];
mysqli_query($con,"INSERT INTO `daily_data2` (emp_id, date, abc, def, entry, ghi)
VALUES ('$emp_id', '$date', '$abc', '$def', '$entry', '$ghi')") or die(mysql_error());
答案 2 :(得分:1)
string fgets(resource $ handle [,int $ length])
读取长度 - 读取1个字节,或换行(包含在返回值中)或EOF(以先到者为准)时结束。如果没有指定长度,它将继续从流中读取,直到它到达行尾。
所以使用:
$data = explode(" ", trim(fgets($f,4096)));
也用
ini_set("auto_detect_line_endings", true);
在fopen之前
答案 3 :(得分:1)
好吧我想这会解决你的问题
class MyCustomClass
{
private $tool;
public function __construct(MyCustomInterface $tool)
{
$this->tool = $tool;
}
}