我必须创建一个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;
数据库已使用navicat创建。 网址是csv类型。就像我的数据库列中的列一样,但是我不想插入前3行的csv-urls
答案 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调用,它只运行一次。