<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 查詢 ## 基本查詢 ### 常規查詢 要提交一個查詢,使用?**query**?函數: ~~~ $this->db->query('YOUR QUERY HERE'); ~~~ 當你執行讀類型的查詢(如:SELECT)時,query()?函數將以**對象**形式 返回一個結果集,參考這里來?[顯示你的結果](http://codeigniter.org.cn/user_guide/database/results.html)。 當你執行寫類型的查詢(如:INSERT、DELETE、UPDATE)時,函數將簡單的返回 TRUE 或 FALSE 來表示操作是否成功。 你可以將函數返回的結果賦值給一個變量,這樣你就可以根據這個變量來獲取 數據了,像下面這樣: ~~~ $query = $this->db->query('YOUR QUERY HERE'); ~~~ ### 簡化查詢 **simple_query**?函數是?$this->db->query()?的簡化版。它不會返回查詢的 結果集,不會去設置查詢計數器,不會去編譯綁定的數據,不會去存儲查詢的調試信息。 它只是用于簡單的提交一個查詢,大多數用戶并不會用到這個函數。 **simple_query**?函數直接返回數據庫驅動器的 "execute" 方法的返回值。對于寫類型的 查詢(如:INSERT、DELETE、UPDATE),返回代表操作是否成功的 TRUE 或 FALSE;而 對于讀類型的成功查詢,則返回代表結果集的對象。 ~~~ if ($this->db->simple_query('YOUR QUERY')) { echo "Success!"; } else { echo "Query failed!"; } ~~~ 注解 對于所有的查詢,如果成功執行的話,PostgreSQL 的?pg_exec()?函數 都會返回一個結果集對象,就算是寫類型的查詢也是這樣。如果你想判斷查詢執行是否 成功或失敗,請記住這一點。 ## 指定數據庫前綴 如果你配置了一個數據庫前綴參數,想把它加上你的 SQL 語句里的表名前面, 你可以調用下面的方法: ~~~ $this->db->dbprefix('tablename'); // outputs prefix_tablename ~~~ 如果你想動態的修改這個前綴,而又不希望創建一個新的數據庫連接,可以使用這個方法: ~~~ $this->db->set_dbprefix('newprefix'); $this->db->dbprefix('tablename'); // outputs newprefix_tablename ~~~ ## 保護標識符 在很多數據庫里,保護表名和字段名是可取的,例如在 MySQL 數據庫里使用反引號。?**使用查詢構造器會自動保護標識符**,盡管如此,你還是可以像下面這樣手工來保護: ~~~ $this->db->protect_identifiers('table_name'); ~~~ 重要 盡管查詢構造器會盡力保護好你輸入的表名和字段名,但值得注意的是, 它并不是被設計來處理任意用戶輸入的,所以,請不要傳未處理的數據給它。 這個函數也可以為你的表名添加一個前綴,如果你在數據庫配置文件中定義了?dbprefix?參數,通過將這個函數的第二個參數設置為 TRUE 來啟用前綴: ~~~ $this->db->protect_identifiers('table_name', TRUE); ~~~ ## 轉義查詢 在提交數據到你的數據庫之前,確保先對其進行轉義是個非常不錯的做法。 CodeIgniter 有三個方法來幫你做到這一點: 1. **$this->db->escape()**?這個函數會檢測數據類型,僅轉義字符串類型的數據。 它會自動用單引號將你的數據括起來,你不用手動添加: ~~~ $sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")"; ~~~ 2. **$this->db->escape_str()**?這個函數忽略數據類型,對傳入的數據進行轉義, 這個方法并不常用,一般情況都是使用上面的那個方法。方法的使用代碼如下: ~~~ $sql = "INSERT INTO table (title) VALUES('".$this->db->escape_str($title)."')"; ~~~ 3. **$this->db->escape_like_str()**?這個函數用于處理 LIKE 語句中的字符串, 這樣,LIKE 通配符('%', '_')可以被正確的轉義。 ~~~ $search = '20% raise'; $sql = "SELECT id FROM table WHERE column LIKE '%" . $this->db->escape_like_str($search)."%'"; ~~~ ## 查詢綁定 查詢綁定可以簡化你的查詢語法,它通過系統自動的為你將各個查詢組裝在一起。 參考下面的例子: ~~~ $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; $this->db->query($sql, array(3, 'live', 'Rick')); ~~~ 查詢語句中的問號將會自動被第二個參數位置的數組的相應的值替代。 也可以使用數組的數組進行綁定,里面的數組會被轉換成 IN 語句的集合: ~~~ $sql = "SELECT * FROM some_table WHERE id IN ? AND status = ? AND author = ?"; $this->db->query($sql, array(array(3, 6), 'live', 'Rick')); ~~~ 上面的例子會被轉換為這樣的查詢: ~~~ SELECT * FROM some_table WHERE id IN (3,6) AND status = 'live' AND author = 'Rick' ~~~ 使用查詢綁定的第二個好處是:所有的值會被自動轉義,生成安全的查詢語句。 你不再需要手工進行轉義,系統會自動進行。 ## 錯誤處理 **$this->db->error();** 要獲取最近一次發生的錯誤,使用?error()?方法可以得到一個包含錯誤代碼和錯誤消息的數組。 這里是一個簡單例子: ~~~ if ( ! $this->db->simple_query('SELECT `example_field` FROM `example_table`')) { $error = $this->db->error(); // Has keys 'code' and 'message' } ~~~
                  <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>

                              哎呀哎呀视频在线观看