首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

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

2012-04-10 
PHP中的一个while循环PHP codewhile($rowsmysql_fetch_array(mysql_query(select pl_title from pagelin

PHP中的一个while循环

PHP code
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.*<\/table>)/iUs', $contents, $match))){$contents = $match[1][0];}else{    (preg_match_all('/(<h1.*<\/ol>)/iUs',$contents,$match));    $contents = $match[1][0];    //echo $match[1][0];    }


这样处理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('/(<h1.*<\/table>)/iUs', $contents, $match))){
$contents = $match[1][0];
}
else{
(preg_match_all('/(<h1.*<\/ol>)/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.*<\/ol>)/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循环结束?> 

热点排行