Heim >Backend-Entwicklung >PHP-Tutorial >按ID 循环出 类别,类别再循环属于这个类别下的文章了。

按ID 循环出 类别,类别再循环属于这个类别下的文章了。

WBOY
WBOYOriginal
2016-06-23 14:09:08982Durchsuche

$xiaoID=$_POST['xsId_xiao'];//POST最小ID$daID=$_POST['xsId_da'];//POST最大ID$chaId="select * from xs where Id>='$xiaoID' and sId<='$daID'";$rsID=$mysqli->query($chaId);while($rs=$rsID->fetch_assoc()){    $ming=$rs['leiming'];//循环出类名;    $chaming="select * from shitu where toming='$ming'";    $cha=$mysqli->query($chaming);    while($row=$cha->fetch_assoc()){        $neirong.=$row['neirong'];//如这个类下很多文章,使用 $neirong. 连接起来    }    $ming=iconv("UTF-8","GBK",$ming);//在WIN平台下转编码。    $wei='../txt/'.$ming.'.txt';//设置生成路径。    $weizhi=fopen($wei,'w')or die("can't open file");    fwrite($weizhi,$neirong);//生成    fclose($weizhi);    $mysqli->close();}


功力只能想到这些了。想不出来怎么处理,错误了。求修改。

 1:按ID 从小到大 循环出类名,
 2:在循环类名下所有文章,
 3:把一个类下所有文章生成为一个TXT。


回复讨论(解决方案)

既然错误了,为什么不贴出错误。

 
既然错误了,为什么不贴出错误。

他没错误呢。提交过去是空白。IE提示500错误。

php.ini 中令 display_errors=On 
然后重启服务器运行看看

php.ini 中令 display_errors=On 
然后重启服务器运行看看

呵呵,一样是500错误。

什么环境?清一下缓存看看。firefox 测试如何?

套红的部分有问题!
$xiaoID=$_POST['xsId_xiao'];//POST最小ID
$daID=$_POST['xsId_da'];//POST最大ID
$chaId="select * from xs where Id>='$xiaoID' and sId $rsID=$mysqli->query($chaId);
while($rs=$rsID->fetch_assoc()){
    $ming=$rs['leiming'];//循环出类名;
    $chaming="select * from shitu where toming='$ming'";
    $cha=$mysqli->query($chaming);
    while($row=$cha->fetch_assoc()){
         $neirong.=$row['neirong'];//如这个类下很多文章,使用 $neirong. 连接起来
    }
    $ming=iconv("UTF-8","GBK",$ming);//在WIN平台下转编码。
    $wei='../txt/'.$ming.'.txt';//设置生成路径。
    $weizhi=fopen($wei,'w')or die("can't open file");
    fwrite($weizhi,$neirong);//生成
    fclose($weizhi);
 
     $mysqli->close();
}

套红的部分有问题!
$xiaoID=$_POST['xsId_xiao'];//POST最小ID
$daID=$_POST['xsId_da'];//POST最大ID
$chaId="select * from xs where Id>='$xiaoID' and sId $rsID=$mysqli->query($chaId);
while($rs=$rsID->fetch_assoc()){
    $ming=$rs['leiming'];//循环出类名;
    $chaming="select * from shitu where toming='$ming'";
    $cha=$mysqli->query($chaming);
    while($row=$cha->fetch_assoc()){
         $neirong.=$row['neirong'];//如这个类下很多文章,使用 $neirong. 连接起来
    }
    $ming=iconv("UTF-8","GBK",$ming);//在WIN平台下转编码。
    $wei='../txt/'.$ming.'.txt';//设置生成路径。
    $weizhi=fopen($wei,'w')or die("can't open file");
    fwrite($weizhi,$neirong);//生成
    fclose($weizhi);
 
     $mysqli->close();
}

假如不使用  $row['neirong']  就是这个类别下的1个文章,循环出来赋值给1个变量,使用变量加点连接起来,集合成一个变量,然后赋值为一个TXT文本内容,我想不到更好的办法。不知道还有其他办法不?

不是说不能 $neirong.=$row['neirong']; 这样写
而是由于 $neirong 没有初值,导致所有的查询结果都会被附加在其中,最终可能因内存不足而失败
何况也不符合你文章按类别归类的初衷

主要的问题在 $mysqli->close();
你是在外层循环中关闭数据库连接的,当 $xiaoID ≠ $daID 时将造成第二轮的  $cha=$mysqli->query($chaming); 失败

如果没有开启php的错误显示功能,则会导致web服务器出现500错

这样写就可以了

$sql = "select * from xs, shitu where xs.leiming=shitu.toming and xs.Id>='$xiaoID' and xs.sId<='$daID'";$rsID=$mysqli->query($sql);while($rs=$rsID->fetch_assoc()){  $ming=$rs['leiming'];//循环出类名;  $ming=iconv("UTF-8","GBK",$ming);//在WIN平台下转编码。  $wei='../txt/'.$ming.'.txt';//设置生成路径。  file_put_contents($wei, $rs['neirong'], FILE_APPEND);}$mysqli->close();
 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn