phpのwhileループを終了できない場合、何が問題なのでしょうか?

WBOY
リリース: 2016-06-23 13:59:08
オリジナル
853 人が閲覧しました

<?php include('include/config.php');include('include/dbclass.php');session_start();$db = db::getInstance();   //  $db->check_user_login();   //检查用户是否登录$db->createcon();            //建立连接// $user=$_SESSION["user"];$user = "libero";           //测试临时使用//   执行 user数据表 选取user数据$sql_user = "select * from user where user = '$user'";$user_array  = $db->fetch_array($sql_user);//  执行 yytable 数据  获取 yytable 所有数据$sql_yytable = "select * from yytable where uid = '$user_array[0]'";echo "<table border = '1'>" ;while($yytable_array = $db->fetch_array($sql_yytable)){	echo "<tr>";	echo "<td>".$yytable_array[0]."</td>";	echo "<td>".$yytable_array[1]."</td>";	echo "<td>".$yytable_array[2]."</td>";	echo "<td>".$yytable_array[3]."</td>";	echo "<td>".$yytable_array[4]."</td>";	echo "<td>".$yytable_array[5]."</td>";			echo "</tr>";	}echo "</table>";//dbclass<?php class db{	private static $dbhost = "localhost";	private static $dbuser = "root";	private static $password = "";	private static $dbname = "yy";	private static $instance = NULL;	 	 	 // 构造函数	private function _construct(){}     //  实例化		public static function getInstance(){			if (self::$instance == null){				self::$instance = new db();				}			return self::$instance;			    }	//连接数据库	public function mycon(){		@mysql_connetc(self::$dbhost,self::$dbuser,self::$password);				}	//选择数据库		public function selectdb(){		$mysql_select_db(self::$dbname);				}				    //创建连接  连接数据库	public function createcon(){				mysql_connect(self::$dbhost,self::$dbuser,self::$password);		mysql_select_db(self::$dbname);	}						//  根据查询条件获取 $sql 结果集	public function fetch_array($sql){		   		   if($result = $this->query($sql))		  {		  $rs = mysql_fetch_array($result, MYSQL_BOTH);		   return $rs;		   		   }		else { echo "数据查询失败"; }				}				// 数据库查询执行语句	public function query($sql){		mysql_query("set names utf8");		return mysql_query($sql);	}		//   loop 更具结果集 获取数组		public function loop_query($result){		return mysql_fetch_array($result);						}						//关闭数据库连接				public function close(){						return mysql_close();					}										}																				}			       ?>
ログイン後にコピー


ディスカッションへの返信(解決策)

while($yytable_array = $db->fetch_array($sql_yytable))
ログイン後にコピー

このとき、SQL ステートメント $sql_yytable が間違っていることを考えてください。

while ステートメントは有料です。 SQL ステートメントを出力します。 $sql_yytable = "select * from yytable where uid = '$user_array[0]'"; 次に、データベースに移動し、以下を実行して結果を確認します

// クエリ条件に従って $sql の結果セットを取得

public function fetch_array($sql){

if($result = $this->query($sql)) { // while を使用した後、この判定は常に真実なので、それは無限のループ$ rs = mysql_fetch_array($ result、mysql_both)になります。

クエリを実行してすべての結果を返す別の fetch_all メソッドを作成する必要があります

while($yytable_array = $db->fetch_array($sql_yytable)){
クエリ $db->fetch_array($sql_yytable) を常に実行し、常に返します最初の結果
あなたの fetch_array メソッドは 1 つのレコードをクエリするためにのみ使用できます
クエリを実行してすべての結果を返すには、別の fetch_all メソッドを作成する必要があります。他のすべての結果をループアウトします。指定してください。

// クエリ条件に基づいて $sql 結果セットを取得します

public function fetch_array($sql){

if($result = $this->query($sql)) { / / whileを使った後は常にこの判定が真になるので $ rs = MySQL_FETCH_ARRAY ($ Result, MySQL_BOTH); クエリ条件に一致する結果を全て出力したい

  public function fetch_all($sql){    if($result = $this->query($sql))    {      while($r = mysql_fetch_array($result, MYSQL_BOTH)) {        $res[] = $r;      }      return $res;    }  else { echo "数据查询失败"; }  }
ログイン後にコピー

もちろんこれは返ります配列であり、配列に基づいて後続の作業を行う必要があります

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート