不会在txt上启动mysql数据库的新行

时间:2011-11-04 22:21:28

标签: php mysql

我对php和mysql都很陌生。我有一个txt文件,上面有一个表,每个列用分号column1;column2分隔,每行都在txt文件的新行上。

  

列1-ROW1;列2-ROW1

     

列1-ROW2;列2-ROW2

我正在尝试使用phpmyadmin将txt文件上传到mysql表。第一行很好,但第二行没有。我尝试了\r\n以及\r\n,但这些都没有奏效。那些只将txt文件的第二个结果放到第一个mysql行的另一行(而不是行)上。所以一切都进入了mysql表的第一行。

我也尝试在最后一列之后放置一个分号column1;column2;,但所有这一切都在第一行后停止。

我想我问的是如何格式化txt文件以使txt文件中的每一行在sql表中开始一个新行。或许我需要先在phpmyadmin上设置一些内容。这可能非常简单,但同样,我对php和sql都很新。非常感谢。


好的,这是我原来的问题。我有一个数据库,在那个数据库中我有一个包含两列'a'和'b'的表。我还有一个我创建的txt文件,它有50行数据。在txt文件中,我用分号a; b分隔'a'和'b'然后我在键盘上点击返回以生成下一行数据。当我使用SQL或PHP脚本上传txt文件然后浏览我的数据库中的表时,它只输入了我的txt文件的第一行,并且在第一行的'b'之后(在我的数据库表中),它已开始在新行上输入第二行数据(来自我的txt文件),但仍然是同一行。我想将我的txt文件中的第二个放在数据库表的新行中。也许我不能,但这就是我遇到的问题。

这是我正在使用的代码:

<?php

$user_name = "username";
$password = "password";
$database = "database";
$server = "server";



$db = mysql_connect($server, $username, $password);


if (!$db) {
    die('Could not connect: ' . mysql_error());
}

$fileHandle = fopen('my_text_file.txt', 'rb');

while (!feof($fileHandle)) {
    $cols  = explode(';', fgets($fileHandle));
    $query = sprintf(
        'INSERT INTO database_table (field1_name, field2_name) VALUES ("%s", "%s")',
        $cols[0], $cols[1]
    );

    mysql_query($query);
}

fclose($fileHandle);
mysql_close($db);
?>

我的txt文件如下所示:

a;b
c;d
e;f

1 个答案:

答案 0 :(得分:0)

你试过这个吗?:

LOAD DATA INFILE 'C:\\yourfile.txt'
INTO TABLE yourtable
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n'

然后单击提交(转到)按钮。

编辑:如果你去PHP路线,试试这个:

<?php
$db = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$db) {
    die('Could not connect: ' . mysql_error());
}

$fileHandle = fopen('yourfile.txt', 'rb');

while (!feof($fileHandle)) {
    $cols  = explode(';', fgets($fileHandle));
    $query = sprintf(
        'INSERT INTO yourtable (column1, column2) VALUES ("%s", "%s")',
        $cols[0], $cols[1]
    );

    mysql_query($query);
}

fclose($fileHandle);
mysql_close($db);

它应该可以正常工作,假设每个“行”在文本文件中用换行符分隔。