解讀五個常見PHP數(shù)據(jù)庫問題_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:解讀PHP版單點(diǎn)登陸實(shí)現(xiàn)方案
      摘要: 本文主要介紹了利用webservice,session,cookie技術(shù),來進(jìn)行通用的單點(diǎn)登錄系統(tǒng)的分析與設(shè)計。具體實(shí)現(xiàn)語言為PHP。單點(diǎn)登錄,英文名為Single Sign On,簡稱為 SSO,是目前企業(yè),網(wǎng)絡(luò)業(yè)務(wù)的用戶綜合處理的重要組成部分。而SSO的定義,是在多個應(yīng)用系統(tǒng)

      揭露 PHP 應(yīng)用程序中出現(xiàn)的五個常見數(shù)據(jù)庫問題 —— 包括數(shù)據(jù)庫模式設(shè)計、數(shù)據(jù)庫訪問和使用數(shù)據(jù)庫的業(yè)務(wù)邏輯代碼 —— 以及它們的解決方案。

        如果只有一種 方式使用數(shù)據(jù)庫是正確的……

        您可以用很多的方式創(chuàng)建數(shù)據(jù)庫設(shè)計、數(shù)據(jù)庫訪問和基于數(shù)據(jù)庫的 PHP 業(yè)務(wù)邏輯代碼,但最終一般以錯誤告終。本文說明了數(shù)據(jù)庫設(shè)計和訪問數(shù)據(jù)庫的 PHP 代碼中出現(xiàn)的五個常見問題,以及在遇到這些問題時如何修復(fù)它們。

        問題 1:直接使用 MySQL

        一個常見問題是較老的 PHP 代碼直接使用 mysql_ 函數(shù)來訪問數(shù)據(jù)庫。清單 1 展示了如何直接訪問數(shù)據(jù)庫。

      <?php
      function get_user_id( $name )
      {
      $db = mysql_connect( 'localhost', 'root', 'password' );
      mysql_select_db( 'users' );
      $res = mysql_query( "SELECT id FROM users WHERE login='".$name."'" );
      while( $row = mysql_fetch_array( $res ) ) { $id = $row[0]; }
      return $id;
      }
      var_dump( get_user_id( 'jack' ) );
      ?>

       

        清單 1. Access/get.php

        

        注意使用了 mysql_connect 函數(shù)來訪問數(shù)據(jù)庫。還要注意查詢,其中使用字符串連接來向查詢添加 $name 參數(shù)。

        該技術(shù)有兩個很好的替代方案:PEAR DB 模塊和 PHP Data Objects (PDO) 類。兩者都從特定數(shù)據(jù)庫選擇提供抽象。因此,您的代碼無需太多調(diào)整就可以在 IBM® DB2®、MySQL、PostgreSQL 或者您想要連接到的任何其他數(shù)據(jù)庫上運(yùn)行。

        使用 PEAR DB 模塊和 PDO 抽象層的另一個價值在于您可以在 SQL 語句中使用 ? 操作符。這樣做可使 SQL 更加易于維護(hù),且可使您的應(yīng)用程序免受 SQL 注入攻擊。

        使用 PEAR DB 的替代代碼如下所示。

      <?php
      require_once("DB.php");
      function get_user_id( $name )
      {
      $dsn = 'mysql://root:password@localhost/users';
      $db =& DB::Connect( $dsn, array() );
      if (PEAR::isError($db)) { die($db->getMessage()); }
      $res = $db->query( 'SELECT id FROM users WHERE login=?',
      array( $name ) );
      $id = null;
      while( $res->fetchInto( $row ) ) { $id = $row[0]; }
      return $id;
      }
      var_dump( get_user_id( 'jack' ) );
      ?>

      分享:詳解PHP分頁顯示制作
      所謂分頁顯示,也就是將數(shù)據(jù)庫中的結(jié)果集人為的分成一段一段的來顯示,這里需要兩個初始的參數(shù)每頁多少條記錄($PageSize)? 當(dāng)前是第幾頁($CurrentPageID)? 現(xiàn)在只要再給我一個結(jié)果集,我就可以顯示某段特定的結(jié)果出來。 至于其他的參數(shù),比如:上一頁

      來源:模板無憂//所屬分類:PHP教程/更新時間:2009-07-09
      相關(guān)PHP教程