> 백엔드 개발 > PHP 튜토리얼 > PHP中的一个while循环解决方案

PHP中的一个while循环解决方案

WBOY
풀어 주다: 2016-06-13 13:38:53
원래의
890명이 탐색했습니다.

PHP中的一个while循环

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->

while($rows=mysql_fetch_array(mysql_query("select pl_title from pagelinks limit 1,2"))){
    $string=$rows['pl_title'];
    $string1=urlencode($string);
}
echo $string;

$url = "http://localhost/index.php/"."$string1";
$contents = file_get_contents($url);

if((preg_match_all('/(<h1.>)/iUs', $contents, $match))){
$contents = $match[1][0];
}
else{
    (preg_match_all('/(<h1.>)/iUs',$contents,$match));
    $contents = $match[1][0];
    //echo $match[1][0];
    }


</h1.></h1.>
로그인 후 복사


这样处理2条数据,都会超过30秒超时,是语句错了吗?目的是批量处理数据,用if处理一条一条的数据,就没有问题。


------解决方案--------------------
while($rows=mysql_fetch_array(mysql_query("select pl_title from pagelinks limit 1,2")))
想想看这个表达式的值会否变成false,每次循环都会执行mysql_query("select pl_title from pagelinks limit 1,2"),那么你获得的结果就永远只是第一条,陷入死循环
------解决方案--------------------
你把mysql_query()分离出来应该不会超时。你那样写陷入死循环了。
------解决方案--------------------
每次循环都会执行while($rows=mysql_fetch_array(mysql_query("select pl_title from pagelinks limit 1,2")))
觉得就是分开写吧
$sql="select pl_title from pagelinks limit 1,2";
$rs=mysql_query($sql);
.....
而且while{}应该从头到尾吧,while(..){
$string=$rows['pl_title'];
$string1=urlencode($string);

echo $string;

$url = "http://localhost/index.php/"."$string1";
$contents = file_get_contents($url);

if((preg_match_all('/()/iUs', $contents, $match))){
$contents = $match[1][0];
}
else{
(preg_match_all('/()/iUs',$contents,$match));
$contents = $match[1][0];
//
}
不然在while里面出不来了,就是死循环了
------解决方案--------------------
还是得把mysql_query()拿出来
------解决方案--------------------

$query = mysql_query("select pl_title from pagelinks limit 1,3");
while ($rows=mysql_fetch_array($query)){
$string[]=$rows['pl_title'];
$string1=urlencode($string);
}
print_r($string);
------解决方案--------------------
探讨
PHP code


$query = mysql_query("select pl_title from pagelinks limit 1,3");
while ($rows=mysql_fetch_array($query)){
$string=$rows['pl_title'];
$string1=urlencode($string);
}
echo $string;

……

------解决方案--------------------
循环里面执行sql语句可是个效率很低的方法,建议换个别的方法!
------解决方案--------------------
PHP code
<?php $DBserver         = "localhost";
$DBname           = "wikidb";
$DBuser           = "root";
$DBpassword       = "";
// mysql 连接,下面代码都将使用这个
$con = mysql_connect("localhost","root","");

mysql_select_db("wikidb");
$query = mysql_query("select pl_title from pagelinks limit 1,3") or die(mysql_error() );

// 更换数据库
mysql_select_db("new", $con);

while ($rows=mysql_fetch_array($query))
 {
    $string   =$rows['pl_title'];
    $string1  =urlencode($rows['pl_title']);
    // 下面仍是循环的一部分

    $url = "http://localhost/index.php/"."$string1";
    $contents = file_get_contents($url);

    if((preg_match_all('/(<h1.*<\/table>)/iUs', $contents, $match))){
         $contents = $match[1][0];
    }
    else{
         preg_match_all('/(<h1.>)/iUs',$contents,$match);
         $contents = $match[1][0];
    }
    
    // 连接的代码被删除了,你只需要改变连接到的数据库在while上一行
    
    mysql_query("set names 'utf8'");
    // 下面两句是什么意思?
    // $sql="";
    // mysql_query($sql);

    $SQL="
  INSERT INTO pagecontents (old_title,old_text) VALUES('{$string}','{$contents}')";
    // 查询,失败返回错误消息
    mysql_query($SQL) or die(mysql_error());

}
// while循环结束
?> <div class="clear">
                 
              
              
        
            </div></h1.>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿