如何将多行文本的每一行单独存储到mysql中

时间:2014-05-05 06:13:27

标签: php mysql explode multilinestring

我是php和mysql的初学者,所以如果我的问题听起来很蠢,请耐心等待。

我有一个多行文本,我需要将它的每一行存储到mysql中我的表的一行。我应该提到每行的字符串用逗号(“,”)作为分隔符分隔。

假设我有以下文字:

  

TITLE1,NAME1 URL1,数字1

     

TITLE2,NAME2 URL2,数字2

     

TITLE3,NAME3,URL3,number3的

我不确定是否需要使用

$lines=explode("\n",$mytext)

爆炸多行文本,因为它会给我一个行数组,我不知道如何将每行拆分为单独的字符串变量并将它们插入表格行。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

这应该这样做,不确定mysql部分,我只是通过w3schools.com查找了

$con = mysqli_connect('host','username','password','dbname');

// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else {

    // Slice the data by lines first.
    $linesOfData = explode('\n',$myText); // becomes an array of data

    // $linesOfData = array_filter($linesOfData); // uncomment this if you feel like the data will come with an empty line, removes any empty values in the array.

    // loop through the sliced data
    foreach($linesOfData as $lineOfData) {
        $arrayOfValues = explode(',',$lineOfData);

        // loop through the array of values
        foreach($arrayOfValues as $value) {
            /*  condition_statement ? value_if_yes : value_if_false
                This is equivalent to 
                if(!empty($value[0]){$title=$value[0]}else{$title=null}
                to check if the array has that index, to avoid error
            */
            $title  = !isset($value[0]) ? trim($value[0]) : null;
            $name   = !isset($value[1]) ? trim($value[1]) : null;
            $url    = !isset($value[2]) ? trim($value[2]) : null;
            $number = !isset($value[3]) ? trim($value[3]) : null;

            // insert to database, not recommended for commercial projects, this is vulnerable to sql injections, you should learn about prepared statements.
            mysqli_query($con,"INSERT INTO tablename (title, name, url, number) VALUES ('$title','$name','$url','$number')");
        }
    }

    // close the connection immediately after using it
    mysqli_close($con);
}