php從資料庫中讀取資料實現方法_PHP教程

來源:互聯網
上載者:User
文章利用了一個簡單的執行個體來實現php從資料庫中讀取資料詳細講解,有需要的朋友可以看看,這裡同時還簡單的講到了安全問題。

先看段代碼

代碼如下 複製代碼

session_start();
$con=mysql_connect('localhost','root','root') or die('連結資料庫失敗!');
mysql_query('set names utf8');
mysql_select_db('GuestBook');

$pagesize = 10;//每一頁顯示多少留言記錄
if(isset($_GET['page'])&&$_GET['page']!='') $page=$_GET['page'];
else $page=0;

$sql = "SELECT a . * , b.name, b.email, b.qq, c.revert_time, c.revert
FROM post a
LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b
WHERE a.guest_id = b.id
ORDER BY a.id DESC";
$numRecord = mysql_num_rows(mysql_query($sql));
$totalpage = ceil($numRecord/$pagesize);

$recordSql = $sql. " LIMIT ".$page*$pagesize.",".$pagesize;
$result = mysql_query($recordSql);
?>

下面來看看

第一行:我們暫時先不說,留到以後再說,暫時還用不到;
第二行——第五行:大家一定很眼熟吧,是的這裡和post.php插入留言資訊的時候的過程是一樣的,也就不多說了。
7、8、9和19行我們暫時不說,這裡是涉及到分頁的,我們將會留到下一章詳細的說明這個問題,因為分頁的過程在web編程過程中幾乎是一個必須要使用的功能。

在11-15行我們定義了一個資料庫查詢語句,在這條語句中我們用了left join …on..語句,關於這個語句的詳細用法請參看Mysql手冊聯集查詢部分。。

看第16行,

代碼如下 複製代碼

$numRecord = mysql_num_rows(mysql_query($sql));

這個語句中我們用mysql_query($sql)把我們定義的sql語句發給資料庫來執行,這個語句執行以後會返回一個記錄資源號,我們用外層的mysql_num_rows來取得有多少個匹配的記錄——也就是返回的記錄總數。

第17行我們用到了ceil函數,這個函數的功能是,進一法取整,也就是說兩個數進行除法操作之後只要餘數大於零整數部分就加一然後捨去小數部分,所以ceil(1/2)的結果是1,而不是我們通常所見到的0.5。這個對於我們來說很有用——也留到下一章分頁的時候再說吧。

第19行,涉及到分頁部分。但是這一行值得說的是,在PHP中字串的相加,也就是字串的串連。兩個字串相加的操作符是點,看例子:

代碼如下 複製代碼

$strFirst=”中國”;
$strTwo=”偉大的國度”;

$strSum = $strFirst.$strTwo;
echo $strSum;

輸出的結果正如我們所料到的一樣:中國偉大的國度。

第20行:我們發送一個帶分頁功能的sql語句到資料庫執行,並把執行結果賦值給$result;
接著我們看,本頁函數的第:128-154行,這個程式的片段功能是迴圈輸出在資料庫中查詢到的記錄。這是我們本章的重點:

看PHP的內建函數mysql_fetch_object()從結果集中取得一行作為對象,關於PHP的對象我們在進階編程欄目中將會詳細的說明,我們這裡只需要知道這種迴圈查詢記錄的方式,需要用 $對象->欄位名 來訪問就行了,執行起來的時候就是每一次指標下移一次,當遇到沒有更多的記錄的時候就返回一個false所以我們可以用while迴圈來讀取$result的這個記錄集。最終形成了while($rs=mysql_fetch_object($result))這個語句,迴圈調用mysql_fetch_object函數並且把每次返回的對象賦值給$rs變數,現在哦我們看這個迴圈的內部,我們可以用$rs->name來取得留言人姓名,用$rs->post_time來訪問留言時間。

在顯示post_time的時候我們做了一些處理,使用到了date()函數,記得我們儲存留言的時候用到了time()函數,這個函數返回的是一個時間戳記,就是從1970年的第一秒起到現在已經經過的秒數(格林尼治時間)。而date函數就是把這個秒數翻譯為我們所需要的時間格式,返回怎樣的字串需要們在date()函數的第一個參數中制定,該函數的第二個參數如果沒有給出,也就是需要翻譯成時間格式的秒數沒有給出的話,他就會以目前時間來翻譯。
Date(“Y年m月d日 H:i:s”),輸出結果就是2009年4月26日 11:16:20。

我們在index.php的132行有這樣的寫法:

代碼如下 複製代碼
post_time+8*3600)?>

我們具體說說這個,我想大家一定會對8*3600這個地方感到奇怪,其實原因很簡單。咱們用time()函數儲存時間的時候用的是格林尼治時間,這個時間和我們的時間相差剛好八個小時,每個小時3600秒,我們處在東方比西方的時間快所以要加上的。記住我們用的是北京時間——處在東八時區哦,這個是常識!關於這一點還有一個做法,這將會在專門闡述PHP的日期函數的文章裡詳細說明。

144和146行都用了兩個函數htmlspcialchars和nl2br,其中htmlspcialchars這個函數是為了避免使用者輸入的指令碼代碼(html和javascript)被執行而必須的,這個函數很重要。如果沒有這個函數使用者輸入的js代碼和html代碼都會被作為頁面程式的一部分被執行,這一點我們在《關於PHP代碼安全性建議》一文中已經說過,不在贅述。
nl2br這個函數的作用是講資料中的n換行轉換成html的換行
以便於頁面表現。在我們輸入留言資訊的時候,用的這個表單,儲存資訊的時候,換行使用n來表示的所以我們這裡需要轉換,以保留使用者輸入資訊在顯示的時候我輸入時段落一致。

http://www.bkjia.com/PHPjc/631301.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631301.htmlTechArticle文章利用了一個簡單的執行個體來實現php從資料庫中讀取資料詳細講解,有需要的朋友可以看看,這裡同時還簡單的講到了安全問題。 先看段代...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.