使用php将字符串插入postgreSQL表

时间:2016-01-14 21:23:58

标签: php postgresql

我正在尝试使用此方法将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++)时,我得到的表只有倒数第二个条目

造成这种情况的原因以及如何解决?

1 个答案:

答案 0 :(得分:0)

你没有在for循环中执行你的sql字符串。

每次你写 $ sql =“”; 时,它都会覆盖之前的声明。

如果然后在循环之后运行查询,它自然只能在一个条目上运行它。

解决方案:在for循环中运行查询,或使用 $ sql。=“”; 将查询附加到彼此(注意fullstop / period。您还需要确保在引用的sql字符串中有一个分号,你现在可以这样做。

无论哪种方式,您还应该转义sql字符串并查看预处理语句,以便您的数据库不易受SQL注入攻击。