溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php中怎么操作mysqli

發(fā)布時間:2021-06-25 16:54:50 來源:億速云 閱讀:200 作者:Leah 欄目:開發(fā)技術(shù)

php中怎么操作mysqli,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

<?php 
define("MYSQL_OPEN_LOGS",true); 
class mysqliHelp 
{ 
    private $db; 
    public function __construct() 
   { 
    //如果要查詢?nèi)罩緇og的話,怎么辦 
   } 
    public function __get($name ) 
    { 
      //echo "__GET:",$name; 
      if(in_array($name,array("db"),true))//或者isset($this->$name) 
      return $this->$name; 
      return null; 
    } 
    public function connect($host,$user,$pass,$db,$charSet='utf8',$force=false) 
    { 
        if($this->db && ($this->db instanceof mysqli) && !$force) 
        { 
            return ; 
        }        
        $this->db=new mysqli($host,$user,$pass,$db); 
        if (mysqli_connect_error()) { 
        die('Connect Error (' . mysqli_connect_errno() . ') '
                . mysqli_connect_error()); 
        } 
        $this->db->set_charset($charSet); 
   
    } 
      
    
     //$dbname string 
     //返回值 如果成功則返回 TRUE,失敗則返回 FALSE。 
    function select_db ($dbname ) 
    { 
        return $this->db->select_db($dbname);  
    } 
    //$query mysqli_result  
    //$resulttype int  MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH. Defaults to MYSQLI_BOTH. 
    //返回值 Returns an array of strings that corresponds to the fetched row or NULL if there are no more rows in resultset.    
    function fetch_array(/*mysqli_result*/ $query, $resulttype = MYSQLI_ASSOC)  
    { 
        //var_dump(!null); 
        if(!$query || !($query instanceof mysqli_result)) 
        return NULL; 
        return $query->fetch_array($resulttype);//  
    } 
    function data_seek($result,$offset) 
    { 
       return $result->data_seek($offset); 
    } 
      
    function fetch_assoc($query)  
    { 
        return $query->fetch_assoc();// 關(guān)聯(lián)數(shù)組 
    } 
    function fetch_row($query)  
    { 
        return $query->fetch_row();// 索引數(shù)組,數(shù)字0,1。eg。。。 
    } 
    function fetch_fields($query) 
    { 
         return $query->fetch_fields(); 
    } 
  //$query string 
  //$resultmode int 
  //返回值 如果成功則返回 TRUE,失敗則返回 FALSE。 For SELECT, SHOW, DESCRIBE or EXPLAIN mysqli_query() will return a result object.  
    public function query($sql ,$resultmode=MYSQLI_STORE_RESULT  ) 
    { 
        if(MYSQL_OPEN_LOGS) { 
            $sqlstarttime = $sqlendttime = 0; 
            $mtime = explode(' ', microtime()); 
            $sqlstarttime = $mtime[1]+ $mtime[0] ; 
   
        } 
        //真正查詢 
        $query=$this->db->query($sql,$resultmode); 
        if(MYSQL_OPEN_LOGS) { 
                       // sleep(1); 
            $mtime = explode(' ', microtime()); 
            $sqlendttime =  $mtime[1] + $mtime[0]  ; 
            $sqlQueryTime = number_format($sqlendttime - $sqlstarttime,6); 
            //dblogs($sql, $sqlQueryTime,1); 
            $explain = array(); 
            $info = $this->db->info; 
            if($query && preg_match("/^(select )/i", $sql)) { 
                $explain = $this->fetch_array($this->db->query('EXPLAIN '.$sql), MYSQLI_ASSOC ); 
            } 
            $GLOBALS['mysql_debug_query'][] = array('sql'=>$sql, 'time'=>$sqlQueryTime, 'info'=>$info, 'explain'=>$explain); 
        }        
           
        if(!$query) 
        { 
          $this->halt('MySQL Query Error', $sql); 
        } 
          
        return $query; 
    } 
    //返回值 mysqli_stmt對象 
    function prepare($sql) 
    { 
      return $this->db->prepare($sql); 
    } 
    function affected_rows() { 
          
        return  $this->db->affected_rows; 
    } 
    function  error()  
    { 
        return  $this->db->error; 
    } 
    function errno() 
    { 
        return  $this->db->errno; 
    } 
    //result 沒有 
    function num_rows($query) 
    { 
        return $query->num_rows; 
    } 
    //返回值 int  The number of fields from a result set.  
    //也可以用另外一種方式  mysqliHelp->db->field_count返回。 
    function num_fields($query) 
    { 
        return  $query->field_count; 
    } 
    function free_result($query) 
    { 
        //all methods are equivalent; 
        $query->free(); 
        //$query->free_result(); 
        //$query->close(); 
    } 
    function insert_id()  
    { 
         if(($id = $this->db->insert_id)>= 0) 
         { 
            return $id; 
         }else
         { 
            $idArr=$this->fetch_array($this->query("SELECT last_insert_id() as id")); 
            return  intval($idArr[0]); 
         } 
          
        //return ($idArr=$this->fetch_array($this->query("SELECT last_insert_id() as id")))[0] 
        //return ($id = $this->db-insert_id)>= 0 ? $id : 0 ; 
    } 
    function close() { 
        return $this->db->close(); 
    } 
      
    function halt($message,$sql) 
    { 
        $dberror = $this->error(); 
        $dberrno = $this->errno(); 
        $help_link = "http://faq.comsenz.com/?type=mysql&dberrno=".rawurlencode($dberrno)."&dberror=".rawurlencode($dberror); 
        echo "<div style=\"position:absolute;font-size:11px;font-family:verdana,arial;background:#EBEBEB;padding:0.5em;\"> 
                <b>MySQL Error</b><br> 
                <b>Message</b>: $message<br> 
                <b>SQL</b>: $sql<br> 
                <b>Error</b>: $dberror<br> 
                <b>Errno.</b>: $dberrno<br> 
                <a href=\"$help_link\" target=\"_blank\">Click here to seek help.</a> 
                </div>"; 
        exit(); 
    } 
    function __destruct()  
    { 
          
       $this->db=null; 
    } 
              
    /*  MySQLi類 
        面向?qū)ο蠼涌?nbsp; 面向過程接口  別名  描述 
        屬性 
        $mysqli->affected_rows   mysqli_affected_rows()  N/A 獲取前一個Mysql操作的受影響行數(shù) 
        $mysqli->client_info mysqli_get_client_info()    N/A 返回字符串類型的Mysql客戶端版本信息 
        $mysqli->client_version  mysqli_get_client_version() N/A 返回整型的Mysql客戶端版本信息 
        $mysqli->connect_errno   mysqli_connect_errno()  N/A 返回最后一次連接調(diào)用的錯誤代碼 
        $mysqli->connect_error   mysqli_connect_error()  N/A 返回一個字符串描述的最后一次連接調(diào)用的錯誤代碼 
        $mysqli->errno   mysqli_errno()  N/A 返回最近的函數(shù)調(diào)用產(chǎn)生的錯誤代碼 
        $mysqli->error   mysqli_error()  N/A 返回字符串描述的最近一次函數(shù)調(diào)用產(chǎn)生的錯誤代碼 
        $mysqli->field_count mysqli_field_count()    N/A 返回最近一次查詢獲取到的列的數(shù)目 
        $mysqli->host_info   mysqli_get_host_info()  N/A 返回一個能夠代表使用的連接類型的字符串 
        $mysqli->protocol_version    mysqli_get_proto_info() N/A 返回使用的Mysql協(xié)議的版本信息 
        $mysqli->server_info mysqli_get_server_info()    N/A 返回Mysql服務(wù)端版本的信息 
        $mysqli->server_version  mysqli_get_server_version() N/A 返回整型的Mysql服務(wù)端版本信息 
        $mysqli->info    mysqli_info()   N/A 最近一次執(zhí)行的查詢的檢索信息 
        $mysqli->insert_id   mysqli_insert_id()  N/A 返回最后一次查詢自動生成并使用的id 
        $mysqli->sqlstate    mysqli_sqlstate()   N/A 返回前一個Mysql操作的SQLSTATE錯誤 
        $mysqli->warning_count   mysqli_warning_count()  N/A 返回給定鏈接最后一次查詢的警告數(shù)量 
        方法 
        mysqli->autocommit() mysqli_autocommit() N/A 打開或關(guān)閉數(shù)據(jù)庫的自動提交功能 
        mysqli->change_user()    mysqli_change_user()    N/A 更改指定數(shù)據(jù)庫連接的用戶 
        mysqli->character_set_name(), mysqli->client_encoding mysqli_character_set_name() mysqli_client_encoding()    返回?cái)?shù)據(jù)庫連接的默認(rèn)字符集 
        mysqli->close()  mysqli_close()  N/A 關(guān)閉先前打開的數(shù)據(jù)庫連接 
        mysqli->commit() mysqli_commit() N/A 提交當(dāng)前事務(wù) 
        mysqli::__construct()   mysqli_connect()    N/A 打開一個到Mysql服務(wù)端的新的連接[注意:靜態(tài)方法] 
        mysqli->debug()  mysqli_debug()  N/A 執(zhí)行調(diào)試操作 
        mysqli->dump_debug_info()    mysqli_dump_debug_info()    N/A 將調(diào)試信息轉(zhuǎn)儲到日志中 
        mysqli->get_charset()    mysqli_get_charset()    N/A 返回對象的字符集 
        mysqli->get_connection_stats()   mysqli_get_connection_stats()   N/A 返回客戶端連接的統(tǒng)計(jì)信息。 僅可用于 mysqlnd。 
        mysqli->get_client_info()    mysqli_get_client_info()    N/A 返回字符串描述的Mysql客戶端版本 
        mysqli->get_client_stats()   mysqli_get_client_stats()   N/A 返回每個客戶端進(jìn)程的統(tǒng)計(jì)信息。 僅可用于 mysqlnd。 
        mysqli->get_cache_stats()    mysqli_get_cache_stats()    N/A 返回客戶端的zval緩存統(tǒng)計(jì)信息。 僅可用于 mysqlnd。 
        mysqli->get_server_info()    mysqli_get_server_info()    N/A 沒有文檔 
        mysqli->get_warnings()   mysqli_get_warnings()   N/A 沒有文檔 
        mysqli::init()  mysqli_init()   N/A 初始化mysqli并且返回一個由mysqli_real_connect使用的資源類型。[不是在對象上,是它返回的$mysqli對象] 
        mysqli->kill()   mysqli_kill()   N/A 請求服務(wù)器殺死一個Mysql線程 
        mysqli->more_results()   mysqli_more_results()   N/A 檢查一個多語句查詢是否還有其他查詢結(jié)果集 
        mysqli->multi_query()    mysqli_multi_query()    N/A 在數(shù)據(jù)庫上執(zhí)行一個多語句查詢 
        mysqli->next_result()    mysqli_next_result()    N/A 從multi_query中準(zhǔn)備下一個結(jié)果集 
        mysqli->options()    mysqli_options()    mysqli_set_opt()    設(shè)置選項(xiàng) 
        mysqli->ping()   mysqli_ping()   N/A ping一個服務(wù)器連接,或者如果那個連接斷了嘗試重連 
        mysqli->prepare()    mysqli_prepare()    N/A 準(zhǔn)備一個用于執(zhí)行的SQL語句 
        mysqli->query()  mysqli_query()  N/A 在數(shù)據(jù)庫上執(zhí)行一個查詢 
        mysqli->real_connect()   mysqli_real_connect()   N/A 打開一個到Mysql服務(wù)端的連接 
        mysqli->real_escape_string(), mysqli->escape_string() mysqli_real_escape_string() mysqli_escape_string()  轉(zhuǎn)義字符串中用于SQL語句中的特殊字符,這個轉(zhuǎn)換會考慮連接的當(dāng)前字符集。 
        mysqli->real_query() mysqli_real_query() N/A 執(zhí)行一個SQL查詢 
        mysqli->rollback()   mysqli_rollback()   N/A 回滾當(dāng)前事務(wù) 
        mysqli->select_db()  mysqli_select_db()  N/A 為數(shù)據(jù)庫查詢選擇默認(rèn)數(shù)據(jù)庫 
        mysqli->set_charset()    mysqli_set_charset()    N/A 設(shè)置默認(rèn)的客戶端字符集 
        mysqli->set_local_infile_default()   mysqli_set_local_infile_default()   N/A 清除用戶為load data local infile命令定義的處理程序 
        mysqli->set_local_infile_handler()   mysqli_set_local_infile_handler()   N/A 設(shè)置LOAD DATA LOCAL INFILE命令執(zhí)行的回調(diào)函數(shù) 
        mysqli->ssl_set()    mysqli_ssl_set()    N/A 使用SSL建立安裝連接 
        mysqli->stat()   mysqli_stat()   N/A 獲取當(dāng)前系統(tǒng)狀態(tài) 
        mysqli->stmt_init()  mysqli_stmt_init()  N/A 初始化一個語句并且返回一個mysqli_stmt_prepare使用的對象 
        mysqli->store_result()   mysqli_store_result()   N/A 傳輸最后一個查詢的結(jié)果集 
        mysqli->thread_id()  mysqli_thread_id()  N/A 返回當(dāng)前連接的線程ID 
        mysqli->thread_safe()    mysqli_thread_safe()    N/A 返回是否設(shè)定了線程安全 
        mysqli->use_result() mysqli_use_result() N/A 初始化一個結(jié)果集的取回 
    */
    /* 
            MySQL_STMT 
        面向?qū)ο蠼涌?nbsp; 過程化接口   別名(不要使用)    描述 
        屬性 
        $mysqli_stmt->affected_rows  mysqli_stmt_affected_rows() N/A 返回最后一條倍執(zhí)行的語句改變,刪除或插入的總行數(shù) 
        $mysqli_stmt->errno  mysqli_stmt_errno() N/A 返回最近一次語句調(diào)用的錯誤代碼 
        $mysqli_stmt->error  mysqli_stmt_error() N/A 返回最后一條語句錯誤的字符串描述 
        $mysqli_stmt->field_count    mysqli_stmt_field_count()   N/A 返回給定語句得到的字段數(shù)量 
        $mysqli_stmt->insert_id  mysqli_stmt_insert_id() N/A 獲取前一個INSERT操作生成的ID 
        $mysqli_stmt->num_rows   mysqli_stmt_num_rows()  N/A 返回語句結(jié)果集中的行數(shù) 
        $mysqli_stmt->param_count    mysqli_stmt_param_count()   mysqli_param_count()    返回給定語句中參數(shù)數(shù)量 
        $mysqli_stmt->sqlstate   mysqli_stmt_sqlstate()  N/A 返回前一個語句操作的SQLSTATE錯誤代碼 
        方法 
        mysqli_stmt->attr_get()  mysqli_stmt_attr_get()  N/A 用于獲取語句屬性的當(dāng)前值 
        mysqli_stmt->attr_set()  mysqli_stmt_attr_set()  N/A 用于修改prepared語句的行為 
        mysqli_stmt->bind_param()    mysqli_stmt_bind_param()    mysqli_bind_param() 將一個變量作為參數(shù)綁定到prepared語句上 
        mysqli_stmt->bind_result()   mysqli_stmt_bind_result()   mysqli_bind_result()    將一個變量綁定到一個prepared語句上用于結(jié)果存儲 
        mysqli_stmt->close() mysqli_stmt_close() N/A 關(guān)閉一個prepared語句 
        mysqli_stmt->data_seek() mysqli_stmt_data_seek() N/A 查看語句結(jié)果集中的任意行 
        mysqli_stmt->execute()   mysqli_stmt_execute()   mysqli_execute()    執(zhí)行一個prepared查詢 
        mysqli_stmt->fetch() mysqli_stmt_fetch() mysqli_fetch()  從一個prepared語句中抓取結(jié)果到限定變量中 
        mysqli_stmt->free_result()   mysqli_stmt_free_result()   N/A 釋放給定語句處理存儲的結(jié)果集所占內(nèi)存 
        $mysqli_stmt->get_result()   mysqli_stmt_get_result  N/A 沒有文檔 僅可用于 mysqlnd。 
        mysqli_stmt->get_warnings()  mysqli_stmt_get_warnings()  N/A 沒有文檔 
        $mysqli_stmt->more_results() mysqli_stmt_more_results()  N/A 沒有文檔 僅可用于 mysqlnd。 
        $mysqli_stmt->next_result()  mysqli_stmt_next_result()   N/A 沒有文檔 僅可用于 mysqlnd。 
        mysqli_stmt->num_rows()  mysqli_stmt_num_rows()  N/A 查閱屬性$mysqli_stmt->num_rows 
        mysqli_stmt->prepare()   mysqli_stmt_prepare()   N/A 準(zhǔn)備一個SQL語句用于執(zhí)行 
        mysqli_stmt->reset() mysqli_stmt_reset() N/A 重置一個prepared語句 
        mysqli_stmt->result_metadata()   mysqli_stmt_result_metadata()   mysqli_get_metadata()   從一個prepared語句返回結(jié)果集元數(shù)據(jù) 
        mysqli_stmt->send_long_data()    mysqli_stmt_send_long_data()    mysqli_send_long_data() 發(fā)送數(shù)據(jù)塊 
        mysqli_stmt->store_result()  mysqli_stmt_store_result()  N/A 從一個prepared語句中傳輸一個結(jié)果集 
    */
    /* 
            MySQLi_RESULT 
        面向?qū)ο蠼涌?nbsp; 過程化接口   別名(不要使用)    描述 
        屬性 
        $mysqli_result->current_field    mysqli_field_tell() N/A 獲取當(dāng)前字段在結(jié)果集指針中的開始位置 
        $mysqli_result->field_count  mysqli_num_fields() N/A 獲取結(jié)果中字段數(shù)量 
        $mysqli_result->lengths  mysqli_fetch_lengths()  N/A 返回結(jié)果集中當(dāng)前行的每列的值得長度,返回?cái)?shù)組 
        $mysqli_result->num_rows mysqli_num_rows()   N/A 獲取結(jié)果中行的數(shù)量 
        方法 
        mysqli_result->data_seek()   mysqli_data_seek()  N/A 將結(jié)果中的結(jié)果指針調(diào)整到任意行 
        mysqli_result->fetch_all()   mysqli_fetch_all()  N/A 抓取所有的結(jié)果行并且以關(guān)聯(lián)數(shù)據(jù),數(shù)值索引數(shù)組,或者兩者皆有的方式返回結(jié)果集。僅可用于 mysqlnd。 
        mysqli_result->fetch_array() mysqli_fetch_array()    N/A 以一個關(guān)聯(lián)數(shù)組,數(shù)值索引數(shù)組,或者兩者皆有的方式抓取一行結(jié)果 
        mysqli_result->fetch_assoc() mysqli_fetch_assoc()    N/A 以一個關(guān)聯(lián)數(shù)組方式抓取一行結(jié)果 
        mysqli_result->fetch_field_direct()  mysqli_fetch_field_direct() N/A 抓取一個單字段的元數(shù)據(jù) 
        mysqli_result->fetch_field() mysqli_fetch_field()    N/A 返回結(jié)果集中的下一個字段 
        mysqli_result->fetch_fields()    mysqli_fetch_fields()   N/A 返回一個代表結(jié)果集字段的對象數(shù)組 
        mysqli_result->fetch_object()    mysqli_fetch_object()   N/A 以一個對象的方式返回一個結(jié)果集中的當(dāng)前行 
        mysqli_result->fetch_row()   mysqli_fetch_row()  N/A 以一個枚舉數(shù)組方式返回一行結(jié)果 
        mysqli_result->field_seek()  mysqli_field_seek() N/A 設(shè)置結(jié)果指針到特定的字段開始位置 
        mysqli_result->free(), mysqli_result->close, mysqli_result->free_result    mysqli_free_result()    N/A 釋放與一個結(jié)果集相關(guān)的內(nèi)存 
    */
    /*注意 MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的區(qū)別 
     其實(shí)這兩個參數(shù)的區(qū)別還是很大的。 
    (1)區(qū)別在于從服務(wù)器上檢索結(jié)果集的行。 
    (2)MYSQLI_USE_RESULT 啟動查詢,但實(shí)際上并未獲取任何行 
    (3)MYSQLI_STORE_RESULT 立即檢索所有的行 
    (4)MYSQLI_STORE_RESULT 從服務(wù)器上檢索結(jié)果集時,就提取了行,并為之分配內(nèi)存,存儲到客戶機(jī)中,隨后調(diào)用 
         mysqli_fetch_array()就再也不會返回錯誤,因?yàn)樗鼉H僅是把行脫離了已經(jīng)保留結(jié)果集的數(shù)據(jù)結(jié) 構(gòu),mysqli_fetch_array()返回 NULL始終表示已經(jīng)到達(dá)結(jié)果集的末端。 
    (5)MYSQLI_USE_RESULT 本身不檢索任何行,而只是啟動一個逐行的檢索,就是說必須對每行調(diào) 用 
        mysqli_fetch_array()來自己完成。既然如此,雖然正常情況下,mysqli_fetch_array()返回NULL仍然表示此 時已到達(dá)結(jié)果集的末端,但也可能表示在與服務(wù)器通信時發(fā)生錯誤。 
      
     如果是MYSQLI_USE_RESULT,query以后得到mysqli_result對象后,執(zhí)行data_seek會出錯,因?yàn)?nbsp;
     mysqli_result::data_seek() [mysqli-result.data-seek]: Function cannot be used with MYSQL_USE_RESULT  
     與MYSQLI_USE_RESULT相比,MYSQLI_STORE_RESULT 有著較高的內(nèi)存和處理需求,因?yàn)槭窃诳蛻魴C(jī)上維護(hù)整個結(jié)果集,所以內(nèi)存分配和創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的耗費(fèi)是非常巨大的,如果想一次檢索多個行,可用 MYSQLI_USE_RESULT。 
     MYSQLI_USE_RESULT有著較低的內(nèi)存需求,因?yàn)橹恍杞o每次處理的單行分配足夠的空間。這樣速度就較快,因?yàn)椴槐貫榻Y(jié)果集建立復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。 
     另一方面,MYSQLI_USE_RESULT把較大的負(fù)載加到了服務(wù)器上,它必須保留結(jié)果集中的行,直到客戶機(jī)看起來適合檢索所有的行。 
    */
} 
$dbHelper=new mysqliHelp; 
$dbHelper->connect('localhost', 'root', '', 'tt'); 
//$dbHelper->db->select_db("tt"); 
//$dbHelper->db->set_charset("utf8"); 
  
//這里如果是MYSQLI_USE_RESULT,下面的$dbHelper->data_seek($query,10);就會出錯 
$query=$dbHelper->query("select id,cateid,title from product limit 22",MYSQLI_STORE_RESULT ); 
//$query=$dbHelper->query("update product set  createtime=UNIX_TIMESTAMP()  limit 22"); 
//$query=$dbHelper->query("insert  into `product`(`cateid`,`title`,`text`,`createtime`) values (2,'test','content',1284822691)"); 
//$query=$dbHelper->query("delete from `product` where id=1"); 
//$query=$dbHelper->query("replace into product(id,cateid,title,text,createtime) values(1,2,'this is demo','test',UNIX_TIMESTAMP())"); 
  
echo $query->num_rows."總數(shù)"; 
//var_dump($query); 
  
//$row=$dbHelper->fetch_array($query); 
//var_dump($row); 
  
//finfo = $dbHelper->fetch_fields($query); 
//var_dump($finfo); 
// foreach ($finfo as $val) { 
    // printf("Name:     %s\n", $val->name); 
    // printf("Table:    %s\n", $val->table); 
    // printf("max. Len: %d\n", $val->max_length); 
    // printf("Flags:    %d\n", $val->flags); 
    // printf("Type:     %d\n\n", $val->type); 
// } 
//如果是查詢操作affected_rows行數(shù)為1,num_rows為查詢結(jié)果行數(shù),num_fields為字段數(shù)目 
//如果是更新或者刪除操作affected_rows為受影響的行數(shù),num_rows為null,num_fields為null 
// 
$dbHelper->data_seek($query,10); 
$row=$dbHelper->fetch_row($query); 
var_dump($row); 
  
echo "影響行數(shù):", "<br/>"; 
var_dump($dbHelper->affected_rows()); 
//var_dump($dbHelper->db->affected_rows ); 
echo "查詢行數(shù)","<br/>"; 
var_dump($dbHelper->num_rows($query)); 
echo "列數(shù):","<br/>"; 
var_dump($dbHelper->num_fields($query)); 
   
//第1種  
$sql="select id,cateid,title from product where cateid=? and title like  ? and createtime<".time(); 
$stmt=$dbHelper->prepare($sql); 
var_dump($stmt); 
$stmt->bind_param('is',$cateid,$title); 
$title="%%"; 
$cateid=10; 
$stmt->execute(); 
$stmt->bind_result($col1, $col2,$col3); 
  
/* fetch values */
while ($stmt->fetch()) { 
    printf("%s %s"."<br/>", $col1, $col3); 
} 
echo "<br/>"; 
$title="%%"; 
$cateid=4; 
$stmt->execute(); 
$stmt->bind_result($col1, $col2,$col3); 
  
/* fetch values */
while ($stmt->fetch()) { 
    printf("%s %s %s"."<br/>", $col1, $col2,$col3); 
} 
$stmt->close(); 
  
//第2種 
$stmt=$dbHelper->db->stmt_init(); 
$stmt->prepare($sql); 
$stmt->bind_param('is',$cateid,$title); 
$title="%%"; 
$cateid=10; 
$stmt->execute(); 
$stmt->bind_result($col1, $col2,$col3); 
  
/* fetch values */
while ($stmt->fetch()) { 
    //printf("%s %s"."<br/>", $col1, $col3); 
} 
echo "<br/>開始multi_query:<br/>"; 
  
//multi_query實(shí)例 
//multi_query()方法的返回值,以及 //mysqli的屬性errno、error、info等只與第一條SQL命令有關(guān),無法判斷第二條及以后的命令是否在執(zhí)行時發(fā)生了錯誤。所以在執(zhí)行 //multi_query()方法的返回值是TRUE時,并不意味著后續(xù)命令在執(zhí)行時沒有出錯。 
$sql="select id,cateid,title from product where cateid=4;"; 
$sql.="select id,cateid,title from product where cateid=10"; 
$query=$dbHelper->db->multi_query($sql); 
if($query) 
{ 
      do { 
        /* store first result set */
        //下面兩種方法有什么區(qū)別? 
        // if ($result = $dbHelper->db->store_result()) { 
            // while ($row = $result->fetch_row()) { 
                // $data[]=$row; 
            // } 
            // $result->free(); 
        // } 
        if ($result = $dbHelper->db->use_result()) {//返回mysqli_result類型 
            //$result->data_seek(0);//返回bool 
            while ($row = $result->fetch_row()) { 
                $data[]=$row; 
            } 
            //$result->close(); 
        } 
          
        /* print divider */
        if ($dbHelper->db->more_results()) { 
            printf("-----------------\n"); 
            $data[]="_______________________________"; 
        } 
    } while ($dbHelper->db->next_result()); 
} 
var_dump($data); 
//exit; 
//執(zhí)行事務(wù) 實(shí)例 
//確保操作的表時innodb類型的表 
//如果是MyISAM,邏輯出錯的話, 會執(zhí)行所有操作,不回滾 
$price=1; 
$success=true; 
$dbHelper->db->autocommit(0); 
$result=$dbHelper->query("update product set cateid=cateid-$price where id=1000" ); 
if(!$result  || $dbHelper->affected_rows()!=1) 
{ 
    $success=false; 
} 
$result=$dbHelper->query("update product set cateid=cateid+$price where id=2"); 
if(!$result  || $dbHelper->affected_rows()!=1) 
{ 
    $success=false; 
} 
if($success) 
{ 
$dbHelper->db->commit(); 
echo "成功"; 
}else
{ 
$dbHelper->db->rollback(); 
echo "失敗"; 
} 
$dbHelper->db->autocommit(1); 
  
//var_dump(  $dbHelper->insert_id()); 
var_dump($mysql_debug_query);  //打印sql查詢信息 
  
// 
?>

關(guān)于php中怎么操作mysqli問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI