阅读urls-csv并将它们插入到mysql中

时间:2014-12-05 18:50:22

标签: php mysql

我必须创建一个php脚本,它读取url列表并将它们插入mysql数据库。 问题是它只插入第一行然后停止。



<?php
	$conn=mysql_connect("my_servername","my_username","my_password") or die (mysql_error());	
	mysql_select_db("my_dbname") or die (mysql_error());	

	$url = array("url1.csv",
				"url2.csv",	
				"url3.csv",	
				.
				.	
				.	
				"url15.csv",	
				);	

	for ($i=0; $i<15; $i++) 
	{	
		$url_go = file_get_contents($url[$i]);
			
		$z = array_filter(explode("\x0A",$url_go[$i]));
			
	
		$counter=0;
	foreach($z as $k=>$v)
	{
		if($metr>2)
		{
		$y=( (explode(';',rtrim($v,";"))) );
		$sql = 'INSERT INTO `mysql_table_name` (name_of_column_1,name_of_column_2, name_of_column_3, name_of_column_4, name_of_column_5, name_of_column_6,name_of_column_7,name_of_column_8,name_of_column_9,name_of_column_10,name_of_column_11,name_of_column_12,name_of_column_13, name_of_column_14,name_of_column_15, name_of_column_16)
			VALUES ('.$y[0].', '.$y[1].', '.$y[2].', '.$y[3].', '.$y[4].', '.$y[5].', '.$y[6].', '.$y[7].', '.$y[8].', '.$y[9].', '.$y[10].', '.$y[11].', '.$y[12].', '.$y[13].', '.$y[14].' , '.$y[15].')';
		}
		$counter++;
	}  
	}
	$result=mysql_query($sql) or die('Query failed:' . mysql_error());
	mysql_close($conn);
?>
&#13;
&#13;
&#13;

数据库已使用navicat创建。 网址是csv类型。就像我的数据库列中的列一样,但是我不想插入前3行的csv-urls

2 个答案:

答案 0 :(得分:1)

您的查询执行需要在第二个for循环中,因为$ sql变量一直被覆盖并且只执行一次。

$sql = 'INSERT INTO `mysql_table_name` (name_of_column_1,name_of_column_2, name_of_column_3, name_of_column_4, name_of_column_5, name_of_column_6,name_of_column_7,name_of_column_8,name_of_column_9,name_of_column_10,name_of_column_11,name_of_column_12,name_of_column_13, name_of_column_14,name_of_column_15, name_of_column_16)
        VALUES ('.$y[0].', '.$y[1].', '.$y[2].', '.$y[3].', '.$y[4].', '.$y[5].', '.$y[6].', '.$y[7].', '.$y[8].', '.$y[9].', '.$y[10].', '.$y[11].', '.$y[12].', '.$y[13].', '.$y[14].' , '.$y[15].')';

mysql_query($sql) or die('Query failed:' . mysql_error()); 

答案 1 :(得分:0)

首先,请注意@tadaman关于mysql()函数过时的注释以及正确转义数据以避免SQL注入的需要。

你只在DB中输入一个条目的原因是因为你的mysql_query语句不在循环中,所以只有最后的$ sql变量实际上被传递给mysql_query调用,它只运行一次。