我已经成功编写了这个CSV文件并且运行良好..我得到的唯一问题是表单上的变量错误..我得到这个错误...注意:未定义的变量:C:中的数据xampp \ htdocs \ helper.php(527):第22行的运行时创建函数
如何解决错误?此
这是我的示例代码......
<form enctype="multipart/form-data" method="POST" action="" >
CSV<input type="file" name="file" />
<input type="submit" value="submit" name="submit"/>
</form>
//connect to the database
$connect = mysql_connect("localhost","root","");
mysql_select_db("test",$connect); //select the table
if(isset($_POST['submit']))
{
//get the csv file
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($data[0]) {
mysql_query("INSERT INTO f38uj_zhgooglemaps_markers (title, addresstext, published, baloon, icontype, mapid) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($data[5])."'
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));
}
?>
答案 0 :(得分:0)
$data=$data[0]
应该是
$data==$data[0]
您正在比较,而不是分配。特别是在if语句中
答案 1 :(得分:0)
如果这是您的所有代码,我看不到您在哪里设置变量$data
,然后继续对其进行测试:
if ($data[0]) { ... }
在进行这些类型的测试之前,您应该使用isset函数,除非您100%确定该变量不为null:
if (isset($var)){ ... }
然后
if ($var) { ... }
答案 2 :(得分:0)
这里有三个问题:
1)你正在使用双引号,它告诉PHP用它找到的变量的值替换你之前设置它的值,见下面的例子。
2)$ data直到循环结束才定义,所以使用常规while循环而不是do-while
3)无论如何你的sql查询都是错误的。
会产生影响$data='value',$data='value',$data='value2',$data='value3',$data='value4',
mysql_query("INSERT INTO f38uj_zhgooglemaps_markers (title, addresstext, published, baloon, icontype, mapid) VALUES
(
$data= '".addslashes($data[0])."',
$data= '".addslashes($data[1])."',
$data= '".addslashes($data[2])."',
$data='".addslashes($data[3])."',
$data= '".addslashes($data[4])."',
$data= '".addslashes($data[5])."'
)
");
}
由于你正在使用do-while,在循环的第一次迭代中,$ data将没有值,因此PHP抛出运行时警告,因为所有解释器都知道它将在稍后设置(它设置为在你的情况下)。基本上在执行操作之前,直到主体运行之后才检查条件,因此直到第一次通过之后才会调用$ data = fgetcsv()。
您可以轻松切换它并使警告消失,只需更改此构造:
do{
//...
}
while($data=fgetcsv())
到此:
while($data=fgetcsv()){
//...
}