我有一个文本文件 def.txt,它看起来像:-
键入缓存的已用空闲共享缓冲区总数
内存:4039 762 3277 0 59 251
我想逐字读取文件并将其插入 mysql 数据库,如上格式。请帮我解决这个问题。
我当前的代码是:-
$fh = fopen('F:\images\def.txt','r') or die($php_errormsg);
for($i=0;$i<=1;$i++)
{
if ($s = fgets($fh,1048576))
{
$words = preg_split('/\s+/',$s,-1,PREG_SPLIT_NO_EMPTY);
$imp = implode(" ",$words);
$con = mysqli_connect("localhost","root","root","test") or die("no connection".mysqli_connect_error());
$a = "insert into test1 values('$imp')";
if(mysqli_query($con,$a))
{
echo "done"."<br>";
}
else
{
echo "not done".mysqli_error($con)."<br>";
}
mysqli_close($con);
}
echo "<br>";
}
fclose($fh) or die($php_errormsg);
最佳答案
既然您只使用了第一行(这是正确的行为吗?),那么应该这样做。它获取数字并将它们一一插入。
$fh = fopen('F:\images\def.txt','r')
or die('Could not open file');
$con = mysqli_connect("localhost","root","root","test")
or die("Could not access database. Error message: ".mysqli_connect_error());
$matches = array();
$line = fgets($fh);
preg_match_all('/\b[0-9]+\b/',$line,$matches);
foreach ( $matches as $word ) {
$query = "insert into test1 (column_name) values('".
mysqli_real_escape_string($con,$word)."')";
if(mysqli_query($con,$query))
{
echo "Inserted $word<br/>";
}
else
{
echo "Failed to insert $word. Error message: ".mysqli_error($con)."<br/>";
}
}
编辑:添加了mysqli_real_escape_string为了安全起见,尽管有了这些数字,它不应该那么重要。只是很好的练习。
关于php - 逐字读取文本文件并相应地将单词插入mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29767732/