我有一个包含这样的内容的文本文件
bob
james
diva
games
library
info
我想知道如何编写一个逐行读取文件的php脚本,并将数据逐行插入数据库作为每行的新行?
感谢
答案 0 :(得分:3)
根据文件的大小,您可以使用几种方法。
使用MySQL - mysql可以使用LOAD DATA [LOCAL] INFILE
直接导入CSV文件
PHP(小文件):使用file()
将文件加载到数组中。循环遍历数组并插入每一行
PHP(大文件):使用fgets()
一次循环一行文件。使用它来构建批量插入查询(INSERT INTO ... VALUES (1), (2), (3)
)
答案 1 :(得分:2)
这样的事情应该有效:
$fh = fopen('file.txt','r');
$db = new PDO("mysql:host=$host;dbname=$database", $username, $password);
while (!feof($fh)) {
$line = fgets($fh);
$db->exec("INSERT INTO mytable(line) VALUES ('$line');");
}
答案 2 :(得分:1)
$conn = mysql_connect( 'localhost', 'root', 'password' );
if ( is_resource( $conn ) ) {
if ( mysql_select_db('database', $conn) ) {
$lines = file('file.txt')
foreach ($lines as $line) {
$query = mysql_query( 'INSERT INTO table (text) VALUES ( "' . $line . '" ) );
if( !$query ) { die ('Error: ' . mysql_error(); ); }
}
}
}
答案 3 :(得分:0)
这是一个超简化的答案,但这里有一些基础知识:
$filename = "filename.txt";
while (!feof($fp)){
$string = fgets($fp, 1024);
mysql_query("INSERT INTO <table> (<fieldname>) VALUES('$string')")
}
答案 4 :(得分:0)
注意feof和plaintext,在阅读完最后一行后不要回复 并把你的循环无限
进行双重检查:S
while(!feof($fh)){
$linha = fgets($fh,4096);
if (!feof($fh)) { // doublecheck
proccess what you need
} else {fclose($fh); break 1;} // real eof
}
进行测试