文本里的数据是这样的: 名次 会员简称 成交量 增减 1 中谷期货 1257 830 2 中粮期货 1081 664 3 大通期货 540 -2 4 辽粮期货 352 350 5 国际期货 274 158 6 民安期货 239 0 7 上海浙石 236 157 8 汇鑫期货 171 154 9 华南期货 170 85 10 东银期货 165 -147 该怎么把排名数据一个个写进数据库里?而且这样的文件一次就有很多个,如何实现多文件循环读取? 文件名是这样子的: 20070319_a0705_成交量_买持仓_卖持仓排名.txt 20070319_a0707_成交量_买持仓_卖持仓排名.txt ..... 20070319_y0711_成交量_买持仓_卖持仓排名.txt 20070319_y0712_成交量_买持仓_卖持仓排名.txt .....
说思路: 由于你文件名有规律…… 所以可以用循环打开…… 建议用 for 循环 打开以后 用 file() 函数取数组 然后再遍历数组(元素为一行数据,比如“1 中谷期货 1257 830\n”) 以空格为分隔符来分割字符串 然后写入数据库 进入下一循环
日。 莫名奇妙的解决了,测试环境win2003+Apache/2.2.2 (Win32) PHP/5.1.4 +MYSQL5.0.22 ,代码: 输入你的那些文本文件的目录,程序自动遍历该目录所有的TXT文件,并以TXT文件名的前14个字符作为表名创建一个数据表,把改文件的数据按格式 存入表中。 最后修改完了,看看还有什么问题。 PHP: <form name="form" method="POST" action=<?php echo $PHP_SELF;?>> 请输入目录:<input type="text" name="dir" /> <input type="submit" name="submit" value="提交" /> </form> <?php //检测魔术引用的代码 $is_magic = @ini_get("magic_quotes_gpc"); if(!get_magic_quotes_gpc()){ if(is_array($_REQUEST)){ foreach($_REQUEST AS $key => $value){ $$key = addslashes($value); } } } else{ if(is_array($_REQUEST)){ foreach($_REQUEST AS $key => $value){ $$key = $value; } } } $inputdir=$_POST['dir']; if(!eregi('^[A-Za-z]:\\\\.+',$inputdir)){ echo '错误的目录'; exit; } $conn = mysql_connect("localhost", "root", "666666"); //设置你的数据库用户及密码。 if (!$conn) { echo "Unable to connect to DB: " . mysql_error(); exit; } if (!mysql_select_db("testdb")) { //设置你的数据库 echo "Unable to select mydbname: " . mysql_error(); exit; } mysql_query("set names 'gb2312'"); $dir=dir($inputdir); $dir->rewind(); while($file=$dir->read()){ if(preg_match("/\.txt/",$file)){ $tablename=substr($file,0,14); $sql ="DROP TABLE IF EXISTS $tablename"; $result = mysql_query($sql); $sql ="CREATE TABLE $tablename ( rank VARCHAR(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL, name VARCHAR(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL, deal VARCHAR(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL, zhenjian VARCHAR(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL )"; $result = mysql_query($sql); if (!$result) { echo "Could not successfully run query ($sql) from DB: " . mysql_error(); exit; } $file=$inputdir.'\\'.$file; $fp=fopen($file,'rb'); while($order=fgetcsv($fp,100," ")){ $sql = "INSERT INTO $tablename (`rank`, `name`, `deal`, `zhenjian`) VALUES ('$order[0]','$order[1]','$order[2]','$order[3]')"; $result = mysql_query($sql); if (!$result) { echo "Could not successfully run query ($sql) from DB: " . mysql_error(); exit; } } } } echo '程序已经成功完成'; $dir->close; ?>
这样可以放一个表里面了。 PHP: <form name="form" method="POST" action=<?php echo $PHP_SELF;?>> 请输入目录:<input type="text" name="dir" /> <input type="submit" name="submit" value="提交"> </form> <?php //数据库设定 $dbhost='localhost'; $dbuser='root'; $dbpwd='666666'; $dbname='testdb'; $dbtable='anytable';//任意你想要的表名 $is_magic = @ini_get("magic_quotes_gpc"); if(!get_magic_quotes_gpc()){ if(is_array($_REQUEST)){ foreach($_REQUEST AS $key => $value){ $$key = addslashes($value); } } } else{ if(is_array($_REQUEST)){ foreach($_REQUEST AS $key => $value){ $$key = $value; } } } $inputdir=$_POST['dir']; if(!eregi('^[A-Za-z]:\\\\.+',$inputdir)){ echo '错误的目录'; exit; } $conn = mysql_connect($dbhost,$dbuser,$dbpwd); if (!$conn) { echo "Unable to connect to DB: " . mysql_error(); exit; } if (!mysql_select_db($dbname)) { echo "Unable to select mydbname: " . mysql_error(); exit; } mysql_query("set names 'gb2312'"); // $sql ="DROP TABLE IF EXISTS $dbtable"; // // $result = mysql_query($sql); $sql ="CREATE TABLE $dbtable ( id INT( 10 ) NOT NULL AUTO_INCREMENT , rank VARCHAR(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL, name VARCHAR(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL, deal VARCHAR(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL, zhenjian VARCHAR(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL, PRIMARY KEY (`id`) )"; $result = mysql_query($sql); if (!$result) { $dir=dir($inputdir); $dir->rewind(); while($file=$dir->read()){ if(preg_match("/\.txt/",$file)){ $file=$inputdir.'\\'.$file; $fp=fopen($file,'rb'); while($order=fgetcsv($fp,100," ")){ $sql = "INSERT INTO $dbtable (`rank`, `name`, `deal`, `zhenjian`) VALUES ('$order[0]','$order[1]','$order[2]','$order[3]')"; $result = mysql_query($sql); if (!$result) { echo "Could not successfully run query ($sql) from DB: " . mysql_error(); exit; } } } } } else{ $dir=dir($inputdir); $dir->rewind(); while($file=$dir->read()){ if(preg_match("/\.txt/",$file)){ $file=$inputdir.'\\'.$file; $fp=fopen($file,'rb'); while($order=fgetcsv($fp,100," ")){ $sql = "INSERT INTO $dbtable (`rank`, `name`, `deal`, `zhenjian`) VALUES ('$order[0]','$order[1]','$order[2]','$order[3]')"; $result = mysql_query($sql); if (!$result) { echo "Could not successfully run query ($sql) from DB: " . mysql_error(); exit; } } } } } echo '程序已经成功完成'; $dir->close; ?> ,但是我觉得放一个表里面 ,以后怎么知道什么是什么呢?