<?php$dbhost = '22.28.194.45';
$dbuser = 'sc004226';
$dbpass = 'nihao';
$dbname = 'sc004226';$tar_dbhost = '127.0.0.1';
$tar_dbuser = 'root';
$tar_dbpass = 'nihaoa';
$tar_dbname = 'tesss';$db = mysql_connect($dbhost, $dbuser, $dbpass, true);
if(!$db){
die("无法连接数据库");
}
if(!mysql_select_db($dbname, $db))
die("数据库不存在");
$tar_db = mysql_connect($tar_dbhost, $tar_dbuser, $tar_dbpass, true);
if(!$tar_db){
die("无法连接数据库");
}
if(!mysql_select_db($tar_dbname, $tar_db))
die("数据库不存在");
$tables = mysql_query("show tables", $db);
$result_array = array();
while($r = mysql_fetch_assoc($tables)){
$result_array = array_merge($result_array, array_values($r));
}
$v = "tour";
$filename = $v.'.txt';
echo "table $v  <br>";
$incsql = "insert into $v values ";
$result = mysql_query("select  * from $v LIMIT 0 , 2" , $db);
if($result){
$i = 0;
while($r = mysql_fetch_assoc($result)){
$ii = 0 ;
$valsql = "";
foreach($r as $kk=>$vv){
if ($ii==0){
$valsql = "('$vv'";
}else{
$valsql .= ",'$vv'";

//echo " $kk : $vv <br>";

$ii++;
}
$valsql  = "$valsql )" ;
if ($i == 0 ){
$incsql  .= $valsql;
}else{
$incsql  = "," .$valsql;
}
$i++;
echo " $incsql <br>";
}
}
//$incsql  = "'".$incsql."'";//$handle = fopen($filename, 'w');
//fwrite($handle, $incsql);mysql_select_db($tar_dbname);
$result = mysql_query($incsql);
//mysql_query($incsql , $tar_db);
//file_put_contents ($filename, $incsql);// 问题1,写入文件为何就最后一组数据 
/*
echo 结果 :insert into tour values ('8','青龙峡','怀柔区(Huairou)','116.684246063232','40.4542622499432','4','','','','
  怀柔青龙峡是一处集田园风光、山川秀色、碧水环绕、飞瀑流泉、长城古貌为特色的旅游观光、度假休闲的风景胜地。始建于明朝万历年间的古老长城,环卧在奇峰峻岭之巅,虽历经几百年风雨沧桑,仍以其原始的古老风貌,成为世人游览的万里长城名胜古迹。景区内还开发有蹦极、速降、攀岩、沙滩浴场、沙滩足球、沙滩排球、竹筏、划船、虹鳟鱼垂钓等集体育健身娱乐为一体的游乐项目。建有民居式客房、林荫木屋,餐厅及卡拉OK等服务娱乐设施。 
','2','2009-05-25','电  话: 69661781 票  价: 门票15元/人,学生儿童半价 交  通: 北京市怀柔怀北镇境内;北京北站7:13郊游3次,9:30可直达;宣武门,东大桥乘游16,东直门乘916、936可直达 ','','/tour/upfile/200407/20047231320450.gif','','1','','0','74','','','1' ) 
,('9','四海水上乐园','石景山区(Shijingshan)','116.182479858398','39.9364608235118','4','','','','位于石景山区八大处高科技园西,游乐项目有高架水滑梯、儿童嬉水区、环流泳区和静流泳区、造浪池、假山洞滑道等。','2','2009-05-25','交通路线:地铁苹果园站东200米往北,或乘336、501、318、965路可达。驾车从长安街到古城后,右拐直行到头即到。 ','','/tour/upfile/200408/2004861001000.jpg','','1','','0','86','','','1' ) tour.txt 内容却是   ,('9','四海水上乐园','石景山区(Shijingshan)','116.182479858398','39.9364608235118','4','','','','位于石景山区八大处高科技园西,游乐项目有高架水滑梯、儿童嬉水区、环流泳区和静流泳区、造浪池、假山洞滑道等。','2','2009-05-25','交通路线:地铁苹果园站东200米往北,或乘336、501、318、965路可达。驾车从长安街到古城后,右拐直行到头即到。 ','','/tour/upfile/200408/2004861001000.jpg','','1','','0','86','','','1' ) 
*/
// 问题2,为何写入不到  $tar_dbname ,也没有错误提示
?>

解决方案 »

  1.   

    file_put_contents ($filename, $incsql); 
    默认是覆盖前面的内容.
    如果不想的话,可以加个参数FILE_APPEND 
    file_put_contents ($filename, $incsql,FILE_APPEND ); 
      

  2.   

    提个建议,你可以精简你的问题,这样大家看起来容易一起。
    大概的看了一下你的insert内容,我想你是想要把数组里的东西写入你的.txt文本文档吧。如果是这样的话,你可以把fwrite()放在for循环中去写入,遍列数组的同时写入数据,这样就不会是你所说的只写入最后一条数据了。
    关于问题2,你的$tar_dbname这个变量是数据库的吧,数据是要写入表里的,当然不能写入库里,你得先在库里建表,再把数据写入表里。
    mysql_error() — Returns the text of the error message from previous MySQL operation
      

  3.   

    表存在。还有 每条那么些耗费资源啊。
    mysql_query($incsql , $tar_db);   这条语句不生效
      

  4.   

    $valsql  = "$valsql )" ; 
    if ($i == 0 ){ 
    $incsql  .= $valsql; 
    }else{ 
    $incsql  = "," .$valsql; 
    } 你的代码太乱了,也不帖个格式出来,真服了.
    看到没,如果$i不等于0, sql变量就被重写了.
      

  5.   


    if($result){ 
    $i = 0; 
    while($r = mysql_fetch_assoc($result))

    $ii = 0 ; 
    $valsql = ""; 
    foreach($r as $kk=>$vv)

    if ($ii==0)

    $valsql = "('$vv'"; 
    }
    else

    $valsql .= ",'$vv'"; 

     //echo " $kk : $vv <br>"; 
      $ii++; 

      $valsql  = "$valsql )" ; 
      if ($i == 0 )
      { 
       $incsql  .= $valsql; 
      }
      else
      { 
        $incsql  = "," .$valsql; 
      } 
      $i++; 
       echo " $incsql <br>"; 


      

  6.   

    $result = mysql_query("select  * from $v LIMIT 0 , 2" , $db); //// 1.这里从数据库中提取两条记录
    if($result){
    $i = 0;
    while($r = mysql_fetch_assoc($result)){
    $ii = 0 ;
    $valsql = "";
    foreach($r as $kk=>$vv){
    if ($ii==0){
    $valsql = "('$vv'";
    }else{
    $valsql .= ",'$vv'";
    }$ii++;
    }
    $valsql  = "$valsql )" ;
    if ($i == 0 ){ 
    $incsql  .= $valsql; //// 第一条记录的时候,有点的
    }else{
    $incsql  = "," .$valsql; //// 第二条记录的时候,无点的,直接赋值,那么前次的值(第一条记录的值)被覆盖了
    }
    $i++;
    echo " $incsql <br>";
    }
    }
    mysql_select_db($tar_dbname); ////  这样是不对的,试试 mysql_select_db($tar_dbname, $tar_db)
    $result = mysql_query($incsql);//mysql_query($incsql , $tar_db); //// 这里不能插入可能是因为你的sql语句不对
    马虎聚搜
      

  7.   

    写入 tour.txt正常了, 不知为何数据库无法写入。感谢先,自己研究下。