<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                從前面的留言本例子,我們可以看到使用sp框架進行開發,在查找和新建數據庫記錄的時候是不需要使用SQL語句的,而且非常的簡單易用。下面我們就來詳細地介紹一下在sp框架中簡便的數據表操作。使用數據庫,首先是需要應用程序配置,留言本中使用了以下的配置: ~~~ "db" => array( // 數據庫設置 'host' => 'localhost', // 數據庫地址,一般都可以是localhost 'login' => 'root', // 數據庫用戶名 'password' => '123456', // 數據庫密碼 'database' => 'test', // 數據庫的庫名稱 ), ~~~ > 如果您是使用虛擬主機,上面的數據庫設置請咨詢您的主機服務商。如果您是使用SpeedAMP進行開發的話,默認的配置就是上面所寫的。 配置好了我們的應用程序后,就可以對每一個數據表,都在model目錄下新建一個數據模型類文件。如留言本中的guestbook文件一樣。數據模型類文件可以很簡單: ~~~ <?php class guestbook extends spModel { var $pk = "id"; // 數據表的主鍵 var $table = "guestbook"; // 數據表的名稱 } ?> ~~~ 這里要注意的是文件名需要和類名相同,然后設置主鍵和表名即可。 接下來我們就可以在我們的controller程序里面直接使用find/findAll,create之類的函數來替代mysql函數和SQL語句了。這里我們介紹幾個常用的函數: findAll 按條件查找記錄,返回數組 findAll($conditions)的$conditions是條件,可以為空,也可以是數組或者字符串。比如留言本中: ~~~ $guestbook = spClass("guestbook"); if( $result = $guestbook->findAll() ){ ~~~ $conditions留空代表著查出表中的全部記錄。 $conditions為字符串,那么字符串代表的就是查詢條件,如$conditions = " name = 'jake' ";那么將查找“留言者名稱是jake”的全部記錄。如$conditions = " name = 'jake'??AND title = '我是標題"; 將查找“留言者名稱是jake,同時留言標題是‘我是標題’”的全部留言。 $conditions為數組,那么每項分別是一個條件,比如: $conditions = array("name" => 'jake' , "title" => '我是標題");和$conditions = " name = 'jake'??AND title = '我是標題";是一樣的。 改寫后的main.php就是: ~~~ <?php function index() // 這里是首頁 { $posturl = spUrl("main", "write"); // 用spUrl制造寫留言的地址 echo "<p align=center><h2>我的留言本</h2></p>"; // 下面做一個表單來提交留言,請注意這些輸入框的name屬性,它們都對應了數據表guestbook的字段名! echo "<p>請寫下您的留言:</p><form action={$posturl} method=POST><p>您的名字:<input type=text name=name></p><p>留言標題:<input type=text name=title></p><p>留言內容:<textarea name=contents></textarea></p><p><input type=submit value=提交></p></form>"; $guestbook = spClass("guestbook"); // 用spClass來初始化留言本數據表對象(模型類對象) $conditions = array( "name" => 'jake', "title" => '我是標題' ); if ($result = $guestbook->findAll($conditions)) { // 用findAll將“留言者名稱是jake,同時留言標題是‘我是標題’”的留言查出來 foreach ($result as $value) { // 循環輸出留言信息 $contentsurl = spUrl("main", "show", array( 'id' => $value['id'] )); // 用spUrl制造查看留言內容頁面地址,請注意array('id'=>$value['id'])將傳遞ID到查看頁面,由spArgs來接收。 echo "<p>這里是第{$value['id']}條留言:<a href={$contentsurl} target=_blank>{$value['title']}</a> {$value['name']}</p>"; } } } ?> ~~~ 發幾條留言,其中有的是符合條件而有的不是,那么我們就可以看出結果來了。 ![](https://box.kancloud.cn/2015-10-19_5624acac43374.jpg) find 查找符合條件的第一條記錄 和findAll不同,find僅是查找并返回第一條符合條件的記錄。在留言本中: ~~~ <?php function show() // 這里是查看留言內容 { $id = $this->spArgs("id"); // 用spArgs接收spUrl傳過來的ID $guestbook = spClass("guestbook"); // 還是用spClass $conditions = array( 'id' => $id ); // 制造查找條件,這里是使用ID來查找屬于ID的那條留言記錄 $result = $guestbook->find($conditions); // 這次是用find來查找,我們把$condition(條件)放了進去 // 下面輸出了該條留言內容 echo "<p>留言標題:{$result['title']}</p>"; echo "<p>留言者:{$result['name']}</p>"; echo "<p>留言內容:{$result['contents']}</p>"; } function write() { } // 這里是留言 ?> ~~~ 使用了find($condition)來查找ID符合條件的記錄,然后顯示出來。我們可以看到,find獲得的結果數組,也與findAll不同。find的結果是一個由字段名組成的數組,而findAll是每個數組項都像一個find的結果。 create 新增一條記錄 create用起來很容易,只要我們把一個有著“字段名對應數值”的數組放到create里面,那么就可以在數據表中新建一條記錄了。在留言本中,我們是直接將表單提交的數據,也就是spArgs獲取到的數據放到create里面的: ~~~ <?php function write() // 這里是留言 { $guestbook = spClass("guestbook"); $guestbook->create($this->spArgs()); // 這里用$this->spArgs()取得了表單的全部內容,然后增加了一條留言記錄 echo "留言成功,<a href=/index.php>返回</a>"; } ?> ~~~ 我們可以更詳細點寫以上的代碼: ~~~ <?php function write() // 這里是留言 { $guestbook = spClass("guestbook"); $newrow = array( 'name' => $this->spArgs('name'), 'title' => $this->spArgs('title'), 'contents' => $this->spArgs('contents') ); $guestbook->create($newrow); echo "留言成功,<a href=/index.php>返回</a>"; } ?> ~~~ 這個和前面的效果是一樣的。我們就可以清晰地看到,create($newrow)的$newrow里面是字段名和值的對應了。為什么沒有id這個字段呢?是因為id本身是自增量,所以不需要出現在這里,它是會自動賦值的。 > 這里我們介紹一下spArgs,在表單中提交的數據,(還有,等)里面的name = "what",那么我們在程序中就可以用$this->spArgs("what");來獲得。像留言本中的“留言標題:”我們在程序中就是$this->spArgs('title')來取得標題的輸入值。請理解這一一對應的方式。 > 我們也可以看到,用數組的形式來進行數據庫的操作,的確要比寫SQL語句方便易記,而且不容易出錯。并且也不需要寫mysql_*的函數。 update 修改符合條件的記錄 update使用的方法有些像是findAll和create的結合體,因為update需要和findAll一樣的條件($conditions),也需要像create的$newrow,只是update只是需要修改的才放到$updaterow 里面而已。 我們在留言本中加上一個test_update(),好用來測試update: ~~~ <?php function test_update() // 測試update用頁面 { $guestbook = spClass("guestbook"); $conditions = array( "id" => 2 ); // 查找id是2的記錄 $newrow = array( 'name' => '喜羊羊' // 然后將這條記錄的name改成“喜羊羊” ); $guestbook->update($conditions, $newrow); // 更新記錄 echo "已修改id為2的記錄!"; } ?> ~~~ 好了,訪問http://localhost/index.php?c=main&a=test_update,然后看看數據庫記錄。我們的id為2的記錄中的name(留言者名稱)改成了“喜羊羊”。 ![](https://box.kancloud.cn/2015-10-19_5624acac537ca.jpg) ![](https://box.kancloud.cn/2015-10-19_5624acac61ff8.jpg) * 請注意,update里面的$updaterow是需要修改什么才將什么放進去,和create不同。 delete 刪除符合條件的記錄 delete的使用方法和findAll是同樣需要$conditions的,也就是delete將刪除符合條件的全部記錄。 比如我們要刪除那條已經改成name是“喜羊羊”的記錄。 ~~~ <?php function test_delete() // 測試delete用頁面 { $guestbook = spClass("guestbook"); $conditions = array( 'name' => '喜羊羊' ); $guestbook->delete($conditions); // 刪除記錄 echo "已刪除名稱是喜羊羊的記錄!"; } ?> ~~~ 我們訪問一下test_delete,然后再看看數據庫記錄,剛才那條喜羊羊的記錄已經沒有了。 ![](https://box.kancloud.cn/2015-10-19_5624acac6f0b8.jpg) ![](https://box.kancloud.cn/2015-10-19_5624acac81cf2.jpg) 我們可以看到delete使用的同樣是和findAll一樣的$conditions。同時我們用delete要注意,delete是會刪除全部符合條件的記錄。 > 當然,如果直接用$guestbook->delete(); 是會報錯而不是刪除全部記錄。 上面我們已經看到了find/findAll,create,update和delete這些操作了。這就是的數據庫CRUD操作(CREATE新建,READ查找讀取,UPDATE修改,DELETE刪除)。了解了這些操作,日常的大部分數據庫開發都是可以完成的。因為實踐證明,幾乎大部分的PHP程序只是用到基本的CRUD。 下章我們把留言本繼續改寫,把它變成使用Smarty模板的程序,我們將會看采用了模板的留言本,在PHP代碼上面將更簡潔;而且簡潔的同時,我們的留言本也變成了可以換皮膚的程序了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看