phpfetchassoc
① php mysql_fetch_array函數,怎樣取得所有行
mysql系的函數中都是逐行讀取的,即第一次mysql_fetch_array得到第一行,第二次得到第二行...你可以自己定義一個函數來讀取所有行,例如
function mysql_fetch_all($result) {
$rows = array();
while($row=mysql_fetch_array($result))
$rows[] = $row;
return $rows;
}
更好的辦法建議你用pdo方式訪問mysql,這個也是php目前推薦的方式(php5開始pdo庫默認在php.ini中已經啟用,而mysql系列默認是不啟用的)。pdo提供了fetch_all方法取得所有行及fetch方法取得一行。
更多信息請查看php手冊中的說明。
② php mysql_fetch_assoc 循環遍歷表格
有2個辦法,第一種直接使用sql的多表聯查,效率高,但是得到的數據table1會被擴展成table2一樣的條目數 要再次處理
select*fromtable1a,table2bwherea.orderid=b.orderid
第二種方法,先得到table11的數據,在循環中匹配table2到一個新的列名中
$conn=mysqli_connect("127.0.0.1","root","123","test");
$sql="select*fromtable1";
$rs=mysqli_query($conn,$sql);
$Arr=array();
while($row=mysqli_fetch_assoc($rs)){
$sql="select*fromtable2whereorderid=".$row["orderid"];
$row["order_sku"]=mysqli_fetch_all(mysqli_query($conn,$sql),MYSQLI_ASSOC);
$Arr[]=$row;
}
print_r($Arr)
如果你是剛開始學php 建議直接拋棄mysql用mysqli 因為PHP5.5已經廢棄mysql方法了
③ 新手求助:php從資料庫取值問題mysql_fetch_assoc()函數的問題
mysql_fetch_assoc會從結果集中取出一行記錄,而且資源指針會往下跳,
也就是說,再用mysql_fetch_assoc時,會取得新的一行記錄,
以此類推,每執行一次mysql_fetch_assoc,取一新行,直到取出最後一行,
再取時,因為已經沒有下一行,就會返回false。
綜上所述:
在你的第一個例子中,$s_as=mysql_fetch_assoc($s_re),是取出結果集的第一行,第一行不為空吧,所以$s_as不等於false,所以,當你用while($s_as)時,相當於while(true),是一個死循環
第二個例子中,則不同,while($s_as=mysql_fetch_assoc($s_re)),每次取一行,當取到最後一行時,再沒有一下行了,mysql_fetch_assoc就會返回flash,也就是$s_as=false,while循環就會停止