我正在尝试使用此方法将3个单独的变量从php数组插入到postgreSQL表中
$raw = fread($file,filesize("artists.txt"));
$array_enters = (explode("\n",$raw));
$arrlength = count($array_enters);
for($i = 0; $i < $arrlength; $i++) {
$arr_line = (explode("|",$array_enters[$i]));
$sql ="
INSERT INTO Artists (artist_name,popularity,link_ar) VALUES('$arr_line[0]','$arr_line[1]','$arr_line[2]');
";
}
但是,我得到的表只填充了我文件的最后一个条目
link_ar | artist_name | popularity
-----------------------------------------------------------+----------------+------------
https://api.spotify.com/v1/artists/6sq7prp0tj9Abn89khmfja | Dead Can Dance | 51
(1 row)
它似乎覆盖了我的所有其他条目,因为当我尝试for($i = 0; $i < $arrlength - 1; $i++)
时,我得到的表只有倒数第二个条目
造成这种情况的原因以及如何解决?
答案 0 :(得分:0)
你没有在for循环中执行你的sql字符串。
每次你写 $ sql =“”; 时,它都会覆盖之前的声明。
如果然后在循环之后运行查询,它自然只能在一个条目上运行它。
解决方案:在for循环中运行查询,或使用 $ sql。=“”; 将查询附加到彼此(注意fullstop / period。您还需要确保在引用的sql字符串中有一个分号,你现在可以这样做。
无论哪种方式,您还应该转义sql字符串并查看预处理语句,以便您的数据库不易受SQL注入攻击。