首先你要說(shuō)你用的是什么數(shù)據(jù)庫(kù)。用最普通的mysql數(shù)據(jù)庫(kù)來(lái)說(shuō),php自帶了一些操作數(shù)據(jù)庫(kù)的函數(shù)。
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、烏審ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的烏審網(wǎng)站制作公司
首先你將語(yǔ)句寫入一個(gè)變量:
$Query = "select * from A_table";
然后用mysql_query這個(gè)函數(shù)執(zhí)行這條語(yǔ)句,并將輸出結(jié)果放在一個(gè)變量中:
$Result = mysql_query($Query);
這個(gè)$Result變量就是一個(gè)資源變量,包含了所有符合條件的結(jié)果。要將結(jié)果處理,需要用另一個(gè)函數(shù)
mysql_fetch_assoc:
while($Row = mysql_fetch_assoc($Result))
{
//這里$Row就是遍歷了結(jié)果的每一行。假設(shè)有個(gè)字段叫A_field,你要把它輸出
echo $Row["A_field"];
//其他操作類似。
}
完整的代碼如下:
$con = mysql_connect('localhost(服務(wù)器地址)', '數(shù)據(jù)庫(kù)用戶名', '數(shù)據(jù)庫(kù)密碼');
//數(shù)據(jù)庫(kù)連接。
if (!$con)
{
die('Could not connect: ' . mysql_error());
}//連接失敗輸出錯(cuò)誤
mysql_select_db('數(shù)據(jù)庫(kù)名', $con);
$sql = "select Name from 表名;";
$result = mysql_query($sql,$con);
while($row= mysql_fetch_array($result)){
echo $row['Name'];
}
這當(dāng)然是不行的了,上面的告訴你的也是錯(cuò)誤的,因?yàn)樵蛟谟谀阊h(huán)的時(shí)候進(jìn)行了數(shù)據(jù)庫(kù)的查詢,所以每次都是新的數(shù)據(jù),指針當(dāng)然要從第一條開始了。
所以不是你的循環(huán)的錯(cuò)誤,而是你數(shù)據(jù)庫(kù)查詢代碼位置的錯(cuò)誤
要這樣寫
$num=mysql_query("select
*
from
china_city
where
parentid=0");
$n=
mysql_num_rows
($num);
for($i=1;$i=$n;$i++){
${"row".$i}=mysql_fetch_array($num);
echo
$i."
".${"row".$i}['city']."
";
}
一般都是用foreach或while寫的
foreach(mysql_fetch_array($num)
as
$key=$value){}
while($row
=mysql_fetch_array($num)){}
既然是遍歷,那就將數(shù)據(jù)庫(kù)指針先移到第一條記錄,逐次取出數(shù)據(jù)進(jìn)行運(yùn)算,下移指針,直到庫(kù)結(jié)束。
通常的代碼如下:
mysql_data_seek($result,0);//指針復(fù)位
while($row=mysql_fetch_array($result))?{?
//對(duì)每行記錄進(jìn)行運(yùn)算?處理,如?:echo?$row['name']."br?/";?
}
對(duì)數(shù)據(jù)庫(kù)取出的值遍歷比較好一點(diǎn):
var
data={$data};
for
(var
item
in
data)
{
$("
:radio[name="+item+"][value="+data[item]+"]").attr("checked",true);
}
上面的寫法可能有錯(cuò)誤,意思就是對(duì)數(shù)據(jù)庫(kù)取出的值遍歷,設(shè)置name=item且value=data[item]的checked為true。
當(dāng)然也可以用模板,這樣就不需要遍歷,使用if標(biāo)簽判定value值來(lái)插入"checked",
比如:
checked
你的指的是無(wú)限級(jí)吧,A是B和C的父級(jí),B是D,E,F的父級(jí),C是G和H的父級(jí),D又是I,J,K的父級(jí)。一般都是采用遞歸算法。
/**??
*?無(wú)限級(jí)的遍歷??
*?@param??[array]??$data??????所有數(shù)據(jù)??
*?@param??integer?$parent?parent為0時(shí),是最祖先級(jí)??
*?@param??integer?$level?????記錄幾級(jí)?
*?@return?[array]????????????已經(jīng)遍歷好的數(shù)組??
*/??
public?function?category($data,$parent=0,$level=0){??
$array?=?[];??
foreach?($data?as?$key?=?$value)?{??
if($value['parent']?==?$parent){??
$value['level']?=?$level;??
$array[]?=?$value;??
$this-category($data,$value['id'],$level+1);??
}??
}??
return?$array;??
}