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);
------解決策---------
------解決策---------
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>
ログイン後にコピー