我必须创建一个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);
?>
数据库已使用 navicat 创建。网址采用 csv 类型。就像一个与我的数据库的列具有相同列的表,但我不想插入前 3 行 csv-url
您的查询执行需要在第二个 for 循环内,因为 $sql 变量不断被覆盖并且只执行了 1 次。
$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());
首先,注意 @tadaman 关于 mysql(( 函数过时的评论以及需要正确转义数据以避免 SQL 注入。
数据库中只有一个条目的原因是,您的 mysql_query 语句不在循环内,因此实际上只有最后一个 $sql 变量被传递给 mysql_query 调用,该调用仅运行一次。