我对php和mysql都很陌生。我有一个带有表的txt文件,其中的每一列由一个分号column1;column2分隔,每一行都在txt文件的新行上。
列1-行1;列2-行1
列1-行2;列2-行2
我正在尝试使用phpmyadmin将txt文件上传到mysql表。第一行进得很好,但第二行不行。我试过\r和\n,也试过\r\n,但这些都不起作用。这些只会将txt文件上的第二个结果拖到第一个mysql行的另一行(而不是行)。因此,所有内容都进入mysql表的第一行。
我也尝试过在最后一列之后加上一个分号( column1;column2; ),但是所有这些都是在第一行之后停止的。
我想我是问如何格式化txt文件,使txt文件上的每一行在sql表中开始一个新行。或者我需要先在phpmyadmin上设置一些东西。这可能非常容易,但同样,我对php和sql都非常陌生。非常感谢。
好吧,这是我最初的问题。我有一个数据库,在这个数据库中,我有一个有两个列'a‘和'b’的表。我还创建了一个包含50行数据的txt文件。在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发布于 2011-11-04 22:29:45
你试过这个吗?
LOAD DATA INFILE 'C:\\yourfile.txt'
INTO TABLE yourtable
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n'然后单击submit (go)按钮。
编辑:如果您使用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);假设每个“行”都由文本文件中的换行符分隔,它就能工作。
https://stackoverflow.com/questions/8016377
复制相似问题