ホームページ  >  記事  >  バックエンド開発  >  PHP の while ループ ソリューション

PHP の while ループ ソリューション

WBOY
WBOYオリジナル
2016-06-13 13:38:53837ブラウズ

PHP の while ループ

PHP コード
<!--

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.*<\/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 秒を超えています。ステートメントは間違っていますか?データを一括処理するのが目的なので、1つずつ処理する場合は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ページリンクからの制限 1,3");
while ($rows=mysql_fetch_array($query)){
$string[]=$rows['pl_title'];
$string1=urlencode($ string );
}
print_r($string);
------解決策---------
話し合う
PHP コード


$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 コード
<?php
$DBserver = "ローカルホスト";
$DBname = "ウィキデータベース";
$DBuser = "ルート";
$DBパスワード = "";
// mysql 接続。次のコードはこれを使用します。
$con = mysql_connect("localhost","root","");

mysql_select_db("wikidb");
$query = mysql_query("ページリンク制限 1,3 から pl_title を選択") または 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];
    }
    それ以外{
         preg_match_all('/(<h1.*</ol>)/iUs',$contents,$match);
         $contents = $match[1][0];
    }
    
    //接続コードは削除されているため、上の行で接続先のデータベースを変更するだけで済みます。
    
    mysql_query("名前を設定 'utf8'");
    //次の 2 つの文は何を意味しますか?
    // $sql="";
    // mysql_query($sql);

    $SQL=
  INSERT INTO pagecontents (old_title,old_text) VALUES('{$string}','{$contents}')";
    //クエリ、失敗した場合はエラー メッセージが返される
    mysql_query($SQL) または die(mysql_error());

}
// whileループの終わり
?><div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。