php while循环退不出是什么问题?

WBOY
Lepaskan: 2016-06-23 13:59:08
asal
854 orang telah melayarinya

<?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();					}										}																				}			       ?>
Salin selepas log masuk


回复讨论(解决方案)

while($yytable_array = $db->fetch_array($sql_yytable))
Salin selepas log masuk

首先考虑$sql_yytable这个sql语句是错误的 这个时候 将返回 “数据查询失败"

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);
return $rs;
} else {
echo "数据查询失败";
}
}

while($yytable_array = $db->fetch_array($sql_yytable)){
总是在执行查询 $db->fetch_array($sql_yytable) 并总是能返回第一条结果

你的这个 fetch_array 方法只能用于查询一条记录的场合
你应该再写一个 fetch_all 方法,查询并返回全部结果

while($yytable_array = $db->fetch_array($sql_yytable)){
总是在执行查询 $db->fetch_array($sql_yytable) 并总是能返回第一条结果

你的这个 fetch_array 方法只能用于查询一条记录的场合
你应该再写一个 fetch_all 方法,查询并返回全部结果 大神你说的对 我一直只循环输出 第一条语句,如果想循环出其他全部结果,具体请明示

// 根据查询条件获取 $sql 结果集
public function fetch_array($sql){
if($result = $this->query($sql)) { // 用while之后 这个判断一直都是成立的 所以就成死循环了 $rs = mysql_fetch_array($result, MYSQL_BOTH);
return $rs;
} else {
echo "数据查询失败";
}
} 知道问题在哪儿了,关键是如何解决啊 我想输出所有符合查询条件的 结果

  public function fetch_all($sql){    if($result = $this->query($sql))    {      while($r = mysql_fetch_array($result, MYSQL_BOTH)) {        $res[] = $r;      }      return $res;    }  else { echo "数据查询失败"; }  }
Salin selepas log masuk

当然这样返回的是数组,你得按数组做后续工作

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan