我对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
答案 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);
它应该可以正常工作,假设每个“行”在文本文件中用换行符分隔。