?php
10年積累的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有硯山免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
$con?=?mysql_connect("localhost","root","");//連接數(shù)據(jù)庫(kù)
mysql_select_db('test');//選擇數(shù)據(jù)庫(kù)
?
html
head
titledropdown?from?mysql/title
/head
body
h1dropdown?from?mysql/h1
form?action="#"?method="post"
select
option?value=0--請(qǐng)選擇--/option
?php
$sql=?"select?val?from?custom?where?field='hook_load'";//sql語句
$result?=?mysql_query($sql,?$con);//執(zhí)行sql語句
while($row?=?mysql_fetch_array($result))
{
echo?"option?value='$row[val]'$row[val]/option";//循環(huán),拼湊下拉框選項(xiàng)
}?
?
/select
/form
/body
/html
既然是遍歷,那就將數(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?/";?
}
?php
$host="localhost";
$username="root";
$password="root";
$db="db4"; //庫(kù)名
$mysql_table="person"; //表名
//連接數(shù)據(jù)庫(kù),面向過程
$conn=mysqli_connect($host,$username,$password);
if(!$conn){
echo "數(shù)據(jù)庫(kù)連接失敗";
exit;
}
//選擇所要操作的數(shù)據(jù)庫(kù)
mysqli_select_db($conn,$db);
//設(shè)置數(shù)據(jù)庫(kù)編碼格式
mysqli_query($conn,"SET NAMES UTF8");
//編寫sql獲取分頁(yè)數(shù)據(jù) SELECT * FROM 表名 LIMIT 起始位置,顯示條數(shù)
//注意:以下id,name,age,say都是字段節(jié)點(diǎn)名,person是表名,db4是數(shù)據(jù)庫(kù)名,think是指定的關(guān)鍵字.
$sql = 'SELECT id, name, age, say
FROM person
WHERE say LIKE "%think%" order by id ASC LIMIT '.($page-1)*$pageSize .",{$pageSize}";
// 節(jié)點(diǎn)名 關(guān)鍵字 節(jié)點(diǎn)名 可指定數(shù)量limit后可寫一個(gè)指定的數(shù)字
//$sql="select * from $mysql_table"
//把sql語句傳送到數(shù)據(jù)庫(kù)
$result=mysqli_query($conn,$sql);
//將數(shù)據(jù)顯示到table中,并未table設(shè)置格式
echo "div class='content'";
echo "table border=1 cellspacing=0 width=30% align=center";
echo "trtdID/tdtdNAME/tdtdsay/td/tr";
while ($row = mysqli_fetch_assoc($result)) {
echo "tr";
echo "td{$row['id']}/td";
echo "td{$row['name']}/td";
echo "td{$row['say']}/td";
echo "tr";
}
echo "/table";
echo "/div";
//釋放結(jié)果
mysqli_free_result($result);
//關(guān)閉數(shù)據(jù)庫(kù)
mysqli_close($conn);
你在while循環(huán)里面不斷對(duì)$file_one賦值,但是循環(huán)結(jié)束之后才連續(xù)輸出它的值多次,當(dāng)然你輸出的實(shí)際上是最后一條記錄的重復(fù)。
可以在循環(huán)里面把數(shù)據(jù)庫(kù)的值賦予數(shù)組,例如:
$file_ones[]=$row["file_url"];
而循環(huán)完畢后使用數(shù)組的元素,例如:
{img:'$file_site$file_ones[0]',
第一、foreach()
foreach()是一個(gè)用來遍歷數(shù)組中數(shù)據(jù)的最簡(jiǎn)單有效的方法。
?php
$urls= array('aaa','bbb','ccc','ddd');
foreach ($urls as $url){
echo "This Site url is $url! br /";
}
?
顯示結(jié)果:
This Site url is aaa
This Site url is bbb
This Site url is ccc
This Site url is ddd
第二、while() 和 list(),each()配合使用。
?php
$urls= array('aaa','bbb','ccc','ddd');
while(list($key,$val)= each($urls)) {
echo "This Site url is $val.br /";
}
?
顯示結(jié)果:
?
This Site url is aaa
This Site url is bbb
This Site url is ccc
This Site url is ddd
第三、for()運(yùn)用for遍歷數(shù)組
?php
$urls= array('aaa','bbb','ccc','ddd');
for ($i= 0;$i count($urls); $i++){
$str= $urls[$i];
echo "This Site url is $str.br /";
}
?
顯示結(jié)果:
This Site url is aaa
This Site url is bbb
This Site url is ccc
This Site url is ddd
這幾種遍歷數(shù)組的方法哪個(gè)更快捷些呢,下面做個(gè)簡(jiǎn)單的測(cè)試就明白了
=========== 下面來測(cè)試三種遍歷數(shù)組的速度 ===========
一般情況下,遍歷一個(gè)數(shù)組有三種方法,for、while、foreach。其中最簡(jiǎn)單方便的是foreach。下面先讓我們來測(cè)試一下共同遍歷一個(gè)有50000個(gè)下標(biāo)的一維數(shù)組所耗的時(shí)間。
?php
$arr= array();
for($i= 0; $i 50000; $i++){
$arr[]= $i*rand(1000,9999);
}
function GetRunTime()
{
list($usec,$sec)=explode(" ",microtime());
return ((float)$usec+(float)$sec);
}
######################################
$time_start= GetRunTime();
for($i= 0; $i count($arr); $i++){
$str= $arr[$i];
}
$time_end= GetRunTime();
$time_used= $time_end- $time_start;
echo 'Used time of for:'.round($time_used, 7).'(s)br /br /';
unset($str, $time_start, $time_end, $time_used);
######################################
$time_start= GetRunTime();
while(list($key, $val)= each($arr)){
$str= $val;
}
$time_end= GetRunTime();
$time_used= $time_end- $time_start;
echo 'Used time of while:'.round($time_used, 7).'(s)br /br /';
unset($str, $key, $val, $time_start, $time_end, $time_used);
######################################
$time_start= GetRunTime();
foreach($arr as$key= $val){
$str= $val;
}
$time_end= GetRunTime();
$time_used= $time_end- $time_start;
echo 'Used time of foreach:'.round($time_used, 7).'(s)br /br /';
?
測(cè)試結(jié)果:
Used time of for:0.0228429(s)
Used time of while:0.0544658(s)
Used time of foreach:0.0085628(s)
結(jié)果表明,對(duì)于遍歷同樣一個(gè)數(shù)組,foreach速度最快,最慢的則是while。從原理上來看,foreach是對(duì)數(shù)組副本進(jìn)行操作(通過拷貝數(shù)組),而while則通過移動(dòng)數(shù)組內(nèi)部指標(biāo)進(jìn)行操作,一般邏輯下認(rèn)為,while應(yīng)該比foreach快(因?yàn)閒oreach在開始執(zhí)行的時(shí)候首先把數(shù)組復(fù)制進(jìn)去,而while直接移動(dòng)內(nèi)部指標(biāo)。),但結(jié)果剛剛相反。原因應(yīng)該是,foreach是PHP內(nèi)部實(shí)現(xiàn),而while是通用的循環(huán)結(jié)構(gòu)。所以,在通常應(yīng)用中foreach簡(jiǎn)單,而且效率高。在PHP5下,foreach還可以遍歷類的屬性。
希望能夠喜歡。
兩種方法
第一種是修改查詢語句,在查詢語句中去除重復(fù)項(xiàng)
select distinct 列名 from 表明????只適用于查詢單列數(shù)據(jù),網(wǎng)上的查詢多列的方法試過一些,都報(bào)錯(cuò)
第二種方法是把查到的數(shù)據(jù)先讀進(jìn)一個(gè)數(shù)組,然后使用array_unique()函數(shù)去除重復(fù)項(xiàng),再使用foreach遍歷數(shù)組來拼湊下拉框選項(xiàng)
$arr=[];
while($row?=?mysql_fetch_array($result))?{
array_push($arr,$row[Keyword]);//讀進(jìn)數(shù)組
}
$arr=array_unique($arr);//去除重復(fù)項(xiàng)
foreach?($arr?as?$key?=?$val)?{
echo?"option?value='$val'$val/option";//循環(huán),拼湊下拉框選項(xiàng)
}
希望能幫到你