phpmysqlfetch
㈠ 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_array 多次用於一個數據集
$query=$db->returndb($sql);
while($news=mysql_fetch_array($query)){
$Data[]=$news;
}
//這樣,資料庫的數據就全部在$Data這個二維數組中了,那你要循環多少次都行,這個數組永遠存在,比如:
froeach($Dataas$rs){
echo$rs['欄位名稱'];
}
froeach($Dataas$rb){
echo$rb['欄位名稱'];
}
.....................
㈢ php里mysql_fetch_array的用法,面向對象。
functionfn_select($tab,$term){
return$this->query("SELECT*FROM$tab$term");
}
functionquery($sql){
returnmysql_query($sql);
}
functionfetch_array($sql){
$result=$this->query($sql);
returnmysql_fetch_array($result);
}
應該是這樣的,有問題的話,歡迎繼續追問
㈣ 為什麼php總是說我mysql_fetch_array出錯
PHP 的警告提示信息里說明了問題的原因:
mysql_fetch_array 函數的第一個參數,這個參數應該是個資源句柄,但在實際代碼運行中,傳遞給這個參數的,是個 boolean 值。
出現這種情況的原因,通常是在 sql 執行後,沒有得到正確的結果,比如,上面的代碼中:
$sqlresult=mysql_query($sql);
應該沒有得以按預期的結果。
㈤ 關於PHP的函數mysql_fetch_assoc的問題
就是取出一條記錄之後 再把指針往下一位 指向下一條記錄
一般實際使用中 都是用循環來取出全部記錄
<?php
//mysql_desc
header('Content-type:text/html;charset=utf-8');
//連接資料庫
@mysql_connect('localhost','root','root')ordie('資料庫連接失敗');
@mysql_query('usemyshop')ordie('資料庫選擇失敗');
$sql="descmy_admin";
$ass=mysql_query($sql);
$list=array();
while($row=mysql_fetch_assoc($ass)){
$list[]=$row['Field'];
}
echo'<pre>';
var_mp($list);
?>
resource在php中是一種數據類型 就是代表從資料庫取出的資源
以後的話 在PHP中都是用PDO進行資料庫操作了
<?php
//PDO:數據查詢
header('Content-type:text/html;charset=utf8');
//連接認證
$pdo=newPDO('mysql:dbname=czbk;charset=utf8','root','1234');
//查詢操作
$sql="select*fromcz_goods";
//執行:有結果返回
$stmt=$pdo->query($sql);
//循環取出所有結果
$lists=array();
while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
$lists[]=$row;
}
var_mp($lists);
?>
㈥ php函數mysql_fetch_row、assoc、array、object的區別
一、mysql_fetch_row
這個函數是從結果集中取一行作為枚舉數據,從和指定的結果標識關聯的結果集中取得一行數據並作為數組返回。每個結果的列儲存在一個數組的單元中,偏移量從
0
開始。
注意,這里是從0開始偏移,也就是說不能用欄位名字來取值,只能用索引來取值。例如:
while($row
=
mysql_fetch_row($res)){
echo
$row['cid'].'>>>'.$row[1].'
';
}
這里的$row['cid']取不到值,$row[1]可以取到。
二、mysql_fetch_assoc
從結果集中取得一行作為關聯數組,也就是說這個函數不能像mysql_fetch_row那樣用索引來取值,只能用欄位名字來取。例如:
while($row
=
mysql_fetch_assoc($res)){
echo
$row['cid'].'>>>'.$row[1].'
';
}
這里$row[1]這樣是取不到值的,$row['cid']可以取到。
三、mysql_fetch_array
從結果集中取得一行作為關聯數組,或數字數組,或二者兼有,除了將數據以數字索引方式儲存在數組中之外,還可以將數據作為關聯索引儲存,用欄位名作為鍵名。
也就是說他得到的結果像數組一樣,可以用key或者索引來取值。例如:
while($row
=
mysql_fetch_array($res)){
echo
$row['cid'].'>>>'.$row[1].'
';
}
這里$row['cid'],$row[1]都能得到相應的值。
mysql_fetch_row和mysql_fetch_assoc的功能加起來就是mysql_fetch_array。
四、mysql_fetch_object
顧名思義,從結果集中取得一行作為對象,並將欄位名字做為屬性。所以只有這樣才能取到值:
while($row
=
mysql_fetch_object($res)){
echo
$row->cid.'>>>'.$row->title."
";
}
㈦ php的mysql_fetch_array函數到底怎麼用啊
$result = mysql_query("ELECT username,yhzfmm FROM xly_yhzl WHERE username = 'zwj0936' AND yhzfmm = '870802'");
這句中的SQL語句應當是SELECT,不是ELECT
既然用if(!$GLOBALS) echo "連接資料庫失敗!";判斷連接是否失敗,就要抑制$GLOBALS["conn"] = mysql_connect($dbhost,$dbuser,$dbpass); 的出錯,添加@(這個不算錯)
改為$GLOBALS["conn"] = @ mysql_connect($dbhost,$dbuser,$dbpass);
別的地方沒看出什麼錯,那個yhzfmm = '870802',如果表設計時是按字元串存儲就沒錯,如果是按數字存儲的話要去掉單引號'
㈧ PHP中mysql_fetch_array函數的問題
給你找了些資料: 介紹的挺詳細的:
mysql_fetch_array函數 -- 從結果集中取得一行作為關聯數組(是以你所搜索的欄位作為的鍵名),或數字數組(也就是你所說的0,1,2,3...),或二者兼有
相關說明
array mysql_fetch_array ( resource result [, int result_type])
返回根據從結果集取得的行生成的數組,如果沒有更多行則返回 FALSE。
mysql_fetch_array() 是 mysql_fetch_row() 的擴展版本。除了將數據以數字索引方式儲存在數組中之外,還可以將數據作為關聯索引儲存,用欄位名作為鍵名。
如果結果中的兩個或以上的列具有相同欄位名,最後一列將優先。要訪問同名的其它列,必須用該列的數字索引或給該列起個別名。對有別名的列,不能再用原來的列名訪問其內容(本例中的 'field')。
還是看幾個例子:
例子 1. 相同欄位名的查詢
select table1.field as foo, table2.field as bar from table1, table2
有一點很重要必須指出,用 mysql_fetch_array() 並不明顯 比用 mysql_fetch_row() 慢,而且還提供了明顯更多的值。
mysql_fetch_array() 中可選的第二個參數 result_type 是一個常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH。本特性是 PHP 3.0.7 起新加的。本參數的默認值是 MYSQL_BOTH。
如果用了 MYSQL_BOTH,將得到一個同時包含關聯和數字索引的數組。用 MYSQL_ASSOC 只得到關聯索引(如同 mysql_fetch_assoc() 那樣),用 MYSQL_NUM 只得到數字索引(如同 mysql_fetch_row() 那樣)。
注: 該函數返回的欄位名是大小寫敏感的。
例子 2. mysql_fetch_array 使用 MYSQL_NUM
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf ("ID: %s Name: %s", $row[0], $row[1]);
}
mysql_free_result($result);
?>
例子 3. mysql_fetch_array 使用 MYSQL_ASSOC
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf ("ID: %s Name: %s", $row["id"], $row["name"]);
}
mysql_free_result($result);
?>
例子 4. mysql_fetch_array 使用 MYSQL_BOTH
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf ("ID: %s Name: %s", $row[0], $row["name"]);
}
mysql_free_result($result);
此例中的"while ($row = mysql_fetch_array($result, MYSQL_BOTH))"
也可以將括弧中的第二個參數去掉,既等價於:
"while ($row = mysql_fetch_array($result))"
?>
---------------------------------------------------------------------
仔細看看這些 相信對你有所幫助
㈨ php里mysql_fetch_row()
正常是這樣的
$sql = "select * from user";
$query = mysql_query($sql);
while(@$row = mysql_fetch_row){
echo $row[0];
}
這里的$row意思就是 根據那條sql語句查詢出來的結果集 是一個數組。
如果你用的是 mysql_fetch_row 那麼可以使用$row[0] $row[1]這樣來列印你所查詢的表的列 0表示第一個欄位 1為第2個欄位 以此類推
如果你使用mysql_fetch_array 那麼列印的時候你可以使用 $row[id] $row[name] 直接使用欄位名稱 這樣更加一目瞭然。
總的來說 這里的row就是結果集的意思 是一個數組。
$row = mysql_fetch_row 為空的時候(也就是沒有查詢到結果) 會報錯。
最好在$row前面加一個@來屏蔽這個錯誤。
㈩ 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手冊中的說明。