Home > Article > Backend Development > php while循环退不出是什么问题?
<?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 = "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 "数据查询失败"; } }