<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之旅 廣告
                [TOC] #### 數據基本操作 微擎系統數據庫操作使用 PDO 兼容方式,以參數綁定的形式進行查詢操作。 系統已對 PDO 兼容性進行檢測及封裝。下面具體說明一下數據庫的幾種基本操作方法。 ##### tablename() 為了防止微擎系統的表與其它系統命名沖突,安裝微擎時均會指定一個表前綴,在寫SQL語句時,需要將表名稱附加上表前綴。可以使用 tablename() 函數。 ``` $sql = "SELECT * FROM ".tablename('users'); echo $sql; //輸出 SELECT * FROM ims_users ``` #### 范圍條件操作 在微擎20160601以后的版本中,增加了pdo_get、pdo_getall、pdo_getcolumn、pdo_getslice、pdo_insert、pdo_update、pdo_delete的范圍條件的支持,具體支持的范圍操作符如下: ``` array('>', '<', '<>', '!=', '>=', '<=', 'NOT IN', 'not in', '+=', '-='); ``` >[info] 字段名與操作符組成條件數組的鍵名,字段名與操作符中間間隔一個空格,具體使用方法如下: ``` //獲取acid大于269的公眾號 $account = pdo_get('account', array('acid >' => '269')); //增加一次用戶的錯誤登錄次數,兩次變為2即可 pdo_update('users_failed_login', array('count +=' => 1), array('username' => 'mizhou')); ``` #### 查詢 查詢是數據庫操作中使用最頻繁的操作,微擎系統封裝了一些函數適用于不同的場景,以下逐個說明 ##### pdo_get 根據條件(AND連接)到指定的表中獲取一條記錄 * $tablename 參數指定要查詢的數據表名,此處傳入的表名不要使用tablename()函數 * $condition 參數指定查詢的條件,以是 AND 連接,支持大于,小于等范圍條件。*具體使用查看本章節第二段范圍條件操作* * $fields 參數指定查詢返回的字段列表 * $limit 參數指定查詢表中獲取一條記錄 ``` array | boolean pdo_get($tablename, $condition = array(), $fields = array()); ``` 示例: ``` //根據uid獲取用戶的用戶名和用戶Id信息 //生成的SQL等同于:SELECT username, uid FROM ims_users WHERE uid = '1' LIMIT 1 $user = pdo_get('users', array('uid' => 1), array('username', 'uid')); //生成的SQL等同于:SELECT username FROM ims_users WHERE username = 'mizhou' AND status = '1' LIMIT 1 $user = pdo_get('users', array('username' => 'mizhou', 'status' => 1), array('username')); ``` ##### pdo_getcolumn 根據條件(AND連接)到指定的表中獲取一條記錄的指定字段 * $tablename 參數指定要查詢的數據表名,此處傳入的表名不要使用tablename()函數 * $condition 參數指定查詢的條件,以是 AND 連接,支持大于,小于等范圍條件.。*具體使用查看本章節第二段范圍條件操作* * $field 參數指定查詢返回的字段 * $limit 參數指定查詢表中獲取一條記錄 ``` string | int pdo_getcolumn($tablename, $condition = array(), $field, $limit=1); ``` 示例: ``` //根據uid獲取用戶的用戶名 //生成的SQL等同于:SELECT username FROM ims_users WHERE uid = '1' LIMIT 1 $username = pdo_getcolumn('users', array('uid' => 1), 'username',1); ``` ##### pdo_getall 根據條件(AND連接)到指定的表中獲取全部記錄 * $condition 參數指定查詢的條件,以是 AND 連接,支持大于,小于等范圍條件.。*具體使用查看本章節第二段范圍條件操作* * $keyfield 參數傳入一個已存在的字段名稱,結果數組鍵值就為該字段,否則為自然排序 * $orderby 參數指定查詢結果按哪個字段排序 * $limit 參數指定查詢語句的LIMIT值,array(start, end) 或是直接傳入范圍 2,3 * 其它參數同pdo_get函數 ``` array | boolean pdo_getall($tablename, $condition = array(), $fields = array(), $keyfield = '',$orderby = array(), $limit = array()) { ``` 示例: ``` //獲取全部啟用的用戶 //生成的SQL等同于:SELECT * FROM ims_users WHERE status = '1' $user = pdo_getall('users', array('status' => 1)); //獲取從第一條數據開始的10條啟用的用戶 //生成的SQL等同于:SELECT * FROM ims_users WHERE status =' 2' ORDER BY uid,groupid LIMIT 0, 10 $user = pdo_getall('users', array('status' => 1), array() , '' , array('uid','groupid') , array(1,10)); $user1 = pdo_getall('users', array('status' => 1), array() , '' , 'uid DESC' , array(1,10)); ``` ##### pdo_getslice 根據條件(AND連接)到指定的表中獲取某個區間的記錄,此函數和 pdo_getall 的區別是可以指定limit 值 * $condition 參數指定查詢的條件,以是 AND 連接,支持大于,小于等范圍條件.。*具體使用查看本章節第二段范圍條件操作* * $limit 參數指定查詢語句的LIMIT值,array(start, end) 或是直接傳入范圍 2,3 * $total 參數指定查詢結果的總條數,方便進行分頁操作 * $orderby 參數指定查詢結果按哪個字段排序 ``` array | boolean pdo_getslice($tablename, $condition = array(), $limit = array(), &$total = null, $fields = array(), $keyfield = '', $orderby = array()) ``` 示例: ``` //獲取從第一條數據開始的10條啟用的用戶 //生成的SQL等同于$user = SELECT * FROM ims_users WHERE status ='2' ORDER BY uid,groupid LIMIT 0, 10 $user = pdo_getslice('users', array('status' => 2), array(1,10) , $total , array() , '' , array('uid','groupid')); ``` #####pdo_fetch 根據SQL語句,查詢一條記錄 * $sql 參數指定要返回記錄集的SQL語句 * $params 參數指定為SQL語句中的參數綁定傳值,防止SQL注入 需要注意的是使用參數綁定時,SQL語中等號后不需要使用引號,傳入的值必須與綁定的名稱一致 ``` array | boolean pdo_fetch($sql, $params = array()); ``` 示例: ``` // :uid 是參數的一個占位符,沒有使用引號,傳入的第二個參數中要與SQL中的占位名稱相同 $user = pdo_fetch("SELECT username, uid FROM ".tablename('users')." WHERE uid = :uid LIMIT 1", array(':uid' => 1)); // LIKE 占位的使用方法 $user = pdo_fetch("SELECT * FROM ".tablename('users')." WHERE username LIKE :username", array(':username' => '%mizhou%')); ``` ##### pdo_fetchcolumn 根據SQL語句,查詢第一條記錄的第N列的值,此語句與 pdo_fetch 使用相同,只是此函數返回的不是一個數組而是一個字符串 * $column 參數指定返回記錄集的第幾列數據 ``` string | boolean pdo_fetchcolumn($sql, $params = array(), $column = 0) ``` 示例: ``` // 獲取用戶的總數,返回的值是一個數字 $user_total = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename('users')); ``` ##### pdo_fetchall 根據SQL語句,查詢全部記錄,使用方法與pdo_fetch相同 ``` array | boolean pdo_fetchall($sql, $params = array(), $keyfield = '') ``` 示例: ``` // 需要注意的是,返回的數組的鍵值為用戶的uid $user = pdo_fetchall("SELECT username, uid FROM ".tablename('users'), array(), 'uid'); ``` ####變更 以下說明插入,更新,刪除操作的幾個函數。 ##### pdo_insert 對指定數據表插入一條新記錄 * $tablename 參數指定要插入記錄的數據表名,此處傳入的表名不要使用tablename()函數 * $data 參數指定要插入的記錄,格式為與數據表字段對應的關聯數組 * $replace 參數指定插入方式使用 INSERT 語句或是 REPLACE 語句(查找到主鍵相同的數據選擇update) ``` int | boolean pdo_insert($tablename, $data = array(), $replace = false) ``` 示例: ``` //添加一條用戶記錄,并判斷是否成功 $user_data = array( 'username' => 'mizhou1', 'status' => '1', ); $result = pdo_insert('users', $user_data); if (!empty($result)) { $uid = pdo_insertid(); message('添加用戶成功,UID為' . $uid); } ``` ##### **pdo_update** 更新指定的數據表的記錄 * $glue 參數指定前面 $condition 數組條件的關聯字 AND 或是 OR ``` array | boolean pdo_update($tablename, $data = array(), $condition, $glue = 'AND') ``` 示例: ``` //更uid等于2的用戶的用戶名 $user_data = array( 'username' => 'mizhou2', ); $result = pdo_update('users', $user_data, array('id' => 2)); if (!empty($result)) { message('更新成功'); } ``` ##### pdo_delete 刪除指定條件的數據 ``` int | boolean pdo_delete($tablename, $condition = array(), $glue = 'AND') ``` 示例: ``` //刪除用戶名為mizhou2的記錄 $result = pdo_delete('users', array('username' => 'mizhou2')); if (!empty($result)) { message('刪除成功'); } ``` ####運行SQL 當更新,插入,刪除無法滿足時,可以直接構造SQL語句進行操作 ##### pdo_query 運行一條SQL語句 * $params 指定SQL語句中綁定參數的值,參數占位與 pdo_fetch 一致 ``` int | boolean query($sql, $params = array()) ``` 示例: ``` //更uid等于2的用戶的用戶名 $result = pdo_query("UPDATE ".tablename('users')." SET username = :username, age = :age WHERE uid = :uid", array(':username' => 'mizhou2', ':age' => 18, ':uid' => 2)); //刪除用戶名為mizhou2的記錄 $result = pdo_query("DELETE FROM ".tablename('users')." WHERE uid = :uid", array(':uid' => 2)); if (!empty($result)) { message('刪除成功'); } ``` #####**pdo_run** 批量執行SQL語句 * $stuff 函數將會將此參數指定的值,替換為當前系統的表前綴。 注:與pdo_query不同的是,pdo_run是可以一次執行多條SQL語句,每條SQL必須以;分隔。 ``` boolean run($sql, $stuff = 'ims_') ``` 示例: ``` $sql = <<<EOF CREATE TABLE IF NOT EXISTS `ims_multisearch` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `weid` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `ims_multisearch_fields` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `reid` int(10) unsigned NOT NULL, `type` tinyint(1) unsigned NOT NULL DEFAULT '1', `title` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `idx_reid` (`reid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; EOF; pdo_run($sql); ``` #### 輔助函數 ##### pdo_fieldexists 檢查表中是否存在某個字段 * $tablename 參數指定要檢查的表名稱 * $fieldname 參數指定要檢查是否存在的字段名 ``` boolean pdo_fieldexists($tablename, $fieldname) ``` 示例: ``` //如果shopping_goods表中不存在credit字段,則新增credit字段 if(!pdo_fieldexists('shopping_goods', 'credit')) { pdo_query("ALTER TABLE ".tablename('shopping_goods')." ADD `credit` int(11) NOT NULL DEFAULT '0';"); } ``` #####**pdo_indexexists** 檢查表中是否存在某個索引 * $tablename 參數指定要檢查的表名稱 * $indexname 參數指定要檢查是否存在的索引名 ``` boolean pdo_indexexists($tablename, $indexname) ``` 示例: ``` //如果site_slide表中不存在multiid索引,則新增multiid索引 if (!pdo_indexexists('site_slide', 'multiid')) { pdo_query("ALTER TABLE ".tablename('site_slide')." ADD INDEX `multiid` (`multiid`);"); } ``` ##### pdo_tableexists 檢查數據庫中是否存在某個表 ``` boolean pdo_tableexists($tablename) ``` pdo_debug 調試運行SQL語句,顯示執行過的SQL的棧情況 * $output 參數指定是否直接打印出調試信息 ``` array debug($output = true, $append = array()) ``` 示例: ``` pdo_debug(); //調用該函數結果如下 Array ( [0] => Array ( [sql] => SET NAMES 'utf8'; [error] => Array ( [0] => 00000 [1] => [2] => ) ) [1] => Array ( [sql] => SELECT `value` FROM `ims_core_cache` WHERE `key`=:key [params] => Array ( [:key] => setting ) [error] => Array ( [0] => 00000 [1] => [2] => ) ) ) ```
                  <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>

                              哎呀哎呀视频在线观看