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.>
Kenyataan: Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn