php操作mysqli(示例代码)

前端之家收集整理的这篇文章主要介绍了php操作mysqli(示例代码)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

<?PHP @H_403_0@define("MysqL_OPENLOGS",true); @H403_0@class MysqLiHelp @H_403_0@{ private $db; public function _construct() @H4030@ { @H403_0@ //如果要查询日志log的话,怎么办 } public function get($name ) @H_4030@ { @H403_0@ //echo "GET:",$name; @H_403_0@ if(inarray($name,array("db"),true))//或者isset($this->$name) @H4030@ return $this->$name; @H4030@ return null; } @H4030@ public function connect($host,$user,$pass,$db,$charSet='utf8',$force=false) @H403_0@ { if($this->db && ($this->db instanceof MysqLi) && !$force) @H_4030@ { @H4030@ return ; @H4030@ } @H403_0@ $this->db=new MysqLi($host,$db); @H_403_0@ if (MysqLi_connecterror()) { @H403_0@ die('Connect Error (' . MysqLi_connecterrno() . ') '@H403_0@ . MysqLi_connecterror()); @H4030@ } @H403_0@ $this->db->setcharset($charSet); } @H4030@ //$dbname string @H4030@ //返回值 如果成功则返回 TRUE,失败则返回 FALSE。 @H403_0@ function selectdb ($dbname ) @H4030@ { @H403_0@ return $this->db->selectdb($dbname); @H403_0@ } //$query MysqLiresult @H403_0@ //$resulttype int MysqLI_ASSOC,MysqLI_NUM,or MysqLI_BOTH. Defaults to MysqLIBOTH. @H4030@ //返回值 Returns an array of strings that corresponds to the fetched row or NULL if there are no more rows in resultset. @H403_0@ function fetch_array(/MysqLi_result/ $query,$resulttype = MysqLIASSOC) @H4030@ { @H403_0@ //vardump(!null); @H403_0@ if(!$query || !($query instanceof MysqLiresult)) @H4030@ return NULL; @H403_0@ return $query->fetcharray($resulttype);// @H403_0@ } function dataseek($result,$offset) @H403_0@ { return $result->data_seek($offset); } function fetchassoc($query) @H403_0@ { return $query->fetchassoc();// 关联数组 @H403_0@ } function fetchrow($query) @H4030@ { @H403_0@ return $query->fetchrow();// 索引数组,数字0,1。eg。。。 @H403_0@ } function fetchfields($query) @H4030@ { @H403_0@ return $query->fetchfields(); @H4030@ } //$query string @H4030@ //$resultmode int @H403_0@ //返回值 如果成功则返回 TRUE,失败则返回 FALSE。 For SELECT,SHOW,DESCRIBE or EXPLAIN MysqLiquery() will return a result object. @H403_0@ public function query($sql,$resultmode=MysqLI_STORERESULT ) @H4030@ { @H403_0@ if(MysqL_OPEN_LOGS) { $sqlstarttime = $sqlendttime = 0; $mtime = explode(' ',microtime()); @H_403_0@ $sqlstarttime = $mtime[1]+ $mtime[0] ; @H_403_0@ } //真正查询 @H_403_0@ $query=$this->db->query($sql,$resultmode); if(MysqL_OPENLOGS) { @H4030@ // sleep(1); @H4030@ $mtime = explode(' ',microtime()); @H403_0@ $sqlendttime = $mtime[1] + $mtime[0] ; @H_403_0@ $sqlQueryTime = number_format($sqlendttime - $sqlstarttime,6); @H_403_0@ //dblogs($sql,$sqlQueryTime,1); @H_4030@ $explain = array(); @H4030@ $info = $this->db->info; @H403_0@ if($query && preg_match("/^(select )/i",$sql)) { @H_403_0@ $explain = $this->fetch_array($this->db->query('EXPLAIN '.$sql),MysqLIASSOC ); @H4030@ } @H403_0@ $GLOBALS['MysqL_debug_query'][] = array('sql'=>$sql,'time'=>$sqlQueryTime,'info'=>$info,'explain'=>$explain); @H_4030@ } @H4030@ if(!$query) @H4030@ { @H403_0@ $this->halt('MysqL Query Error',$sql); @H_4030@ } @H403_0@ return $query; } //返回值 MysqListmt对象 @H403_0@ function prepare($sql) @H_4030@ { @H403_0@ return $this->db->prepare($sql); } function affectedrows() { @H403_0@ return $this->db->affectedrows; @H4030@ } @H4030@ function error() @H4030@ { @H4030@ return $this->db->error; } @H4030@ function errno() @H4030@ { @H4030@ return $this->db->errno; @H4030@ } @H403_0@ //result 没有 function numrows($query) @H4030@ { @H403_0@ return $query->numrows; } //返回值 int The number of fields from a result set. @H403_0@ //也可以用另外一种方式 MysqLiHelp->db->fieldcount返回。 @H403_0@ function numfields($query) @H4030@ { @H403_0@ return $query->fieldcount; @H403_0@ } function freeresult($query) @H4030@ { @H4030@ //all methods are equivalent; @H4030@ $query->free(); @H403_0@ //$query->freeresult(); @H4030@ //$query->close(); @H403_0@ } function insertid() @H403_0@ { if(($id = $this->db->insertid)>= 0) @H4030@ { return $id; @H4030@ }else@H4030@ { @H403_0@ $idArr=$this->fetch_array($this->query("SELECT last_insertid() as id")); @H4030@ return intval($idArr[0]); @H4030@ } @H403_0@ //return ($idArr=$this->fetch_array($this->query("SELECT last_insertid() as id")))[0] @H403_0@ //return ($id = $this->db-insertid)>= 0 ? $id : 0 ; @H4030@ } function close() { return $this->db->close(); @H4030@ } @H403_0@ function halt($message,$sql) @H_4030@ { @H4030@ $dberror = $this->error(); @H4030@ $dberrno = $this->errno(); @H403_0@ $help_link = "http://faq.comsenz.com/?type=MysqL&dberrno=".rawurlencode($dberrno)."&dberror=".rawurlencode($dberror); @H_4030@ echo "<div style=\"position:absolute;font-size:11px;font-family:verdana,arial;background:#EBEBEB;padding:0.5em;\"> @H403_0@ MysqL Error
@H_4030@ Message: $message
@H
403_0@ sql: $sql
@H_4030@ Error: $dberror
@H
4030@ Errno.: $dberrno
@H
403_0@ <a href=\"$help_link\" target=\"blank\">Click here to seek help. @H4030@

"; @H4030@ exit(); @H403_0@ } function destruct() @H_4030@ { @H4030@ $this->db=null; } @H403_0@ /* MysqLi类 @H_4030@ 面向对象接口 面向过程接口 别名 描述 @H403_0@ 属性 @H_403_0@ $MysqLi->affected_rows MysqLi_affected_rows() N/A 获取前一个MysqL操作的受影响行数 @H_403_0@ $MysqLi->client_info MysqLi_get_client_info() N/A 返回字符串类型的MysqL客户端版本信息 @H_403_0@ $MysqLi->client_version MysqLi_get_client_version() N/A 返回整型的MysqL客户端版本信息 @H_403_0@ $MysqLi->connect_errno MysqLi_connect_errno() N/A 返回最后一次连接调用错误代码 @H_403_0@ $MysqLi->connect_error MysqLi_connect_error() N/A 返回一个字符串描述的最后一次连接调用错误代码 @H_403_0@ $MysqLi->errno MysqLi_errno() N/A 返回最近的函数调用产生的错误代码 @H_403_0@ $MysqLi->error MysqLi_error() N/A 返回字符串描述的最近一次函数调用产生的错误代码 @H_403_0@ $MysqLi->field_count MysqLi_field_count() N/A 返回最近一次查询获取到的列的数目 @H_403_0@ $MysqLi->host_info MysqLi_get_hostinfo() N/A 返回一个能够代表使用的连接类型的字符串 @H403_0@ $MysqLi->protocol_version MysqLi_get_proto_info() N/A 返回使用的MysqL协议的版本信息 @H_403_0@ $MysqLi->server_info MysqLi_get_server_info() N/A 返回MysqL服务端版本的信息 @H_403_0@ $MysqLi->server_version MysqLi_get_server_version() N/A 返回整型的MysqL服务端版本信息 @H_403_0@ $MysqLi->info MysqLi_info() N/A 最近一次执行的查询的检索信息 @H_403_0@ $MysqLi->insert_id MysqLi_insert_id() N/A 返回最后一次查询自动生成并使用的id @H_403_0@ $MysqLi->sqlstate MysqLi_sqlstate() N/A 返回前一个MysqL操作的sqlSTATE错误 @H_403_0@ $MysqLi->warning_count MysqLi_warning_count() N/A 返回给定链接最后一次查询的警告数量 @H_403_0@ 方法 @H_403_0@ MysqLi->autocommit() MysqLi_autocommit() N/A 打开或关闭数据库自动提交功能 @H_403_0@ MysqLi->change_user() MysqLi_change_user() N/A 更改指定数据库连接的用户 @H_403_0@ MysqLi->character_set_name(),MysqLi->client_encoding MysqLi_character_set_name() MysqLi_client_encoding() 返回数据库连接的默认字符集 @H_403_0@ MysqLi->close() MysqLi_close() N/A 关闭先前打开的数据库连接 @H_403_0@ MysqLi->commit() MysqLicommit() N/A 提交当前事务 @H403_0@ MysqLi::construct() MysqLi_connect() N/A 打开一个到MysqL服务端的新的连接[注意:静态方法] @H_403_0@ MysqLi->debug() MysqLidebug() N/A 执行调试操作 @H403_0@ MysqLi->dump_debug_info() MysqLi_dump_debuginfo() N/A 将调试信息转储到日志中 @H403_0@ MysqLi->get_charset() MysqLi_getcharset() N/A 返回对象的字符集 @H403_0@ MysqLi->get_connection_stats() MysqLi_get_connection_stats() N/A 返回客户端连接的统计信息。 仅可用于 MysqLnd。 @H_403_0@ MysqLi->get_client_info() MysqLi_get_client_info() N/A 返回字符串描述的MysqL客户端版本 @H_403_0@ MysqLi->get_client_stats() MysqLi_get_client_stats() N/A 返回每个客户端进程的统计信息。 仅可用于 MysqLnd。 @H_403_0@ MysqLi->get_cache_stats() MysqLi_get_cache_stats() N/A 返回客户端的zval缓存统计信息。 仅可用于 MysqLnd。 @H_403_0@ MysqLi->get_server_info() MysqLi_get_serverinfo() N/A 没有文档 @H403_0@ MysqLi->get_warnings() MysqLi_getwarnings() N/A 没有文档 @H403_0@ MysqLi::init() MysqLi_init() N/A 初始化MysqLi并且返回一个由MysqLi_real_connect使用的资源类型。[不是在对象上,是它返回的$MysqLi对象] @H_403_0@ MysqLi->kill() MysqLi_kill() N/A 请求服务器杀死一个MysqL线程 @H_403_0@ MysqLi->more_results() MysqLi_more_results() N/A 检查一个多语句查询是否还有其他查询结果集 @H_403_0@ MysqLi->multi_query() MysqLi_multi_query() N/A 在数据库上执行一个多语句查询 @H_403_0@ MysqLi->next_result() MysqLi_next_result() N/A 从multiquery中准备下一个结果集 @H403_0@ MysqLi->options() MysqLi_options() MysqLi_setopt() 设置选项 @H403_0@ MysqLi->ping() MysqLiping() N/A ping一个服务器连接,或者如果那个连接断了尝试重连 @H403_0@ MysqLi->prepare() MysqLi_prepare() N/A 准备一个用于执行的sql语句 @H_403_0@ MysqLi->query() MysqLi_query() N/A 在数据库上执行一个查询 @H_403_0@ MysqLi->real_connect() MysqLi_real_connect() N/A 打开一个到MysqL服务端的连接 @H_403_0@ MysqLi->real_escape_string(),MysqLi->escape_string() MysqLi_real_escape_string() MysqLi_escape_string() 转义字符串中用于sql语句中的特殊字符,这个转换会考虑连接的当前字符集。 @H_403_0@ MysqLi->real_query() MysqLi_real_query() N/A 执行一个SQL查询 @H_403_0@ MysqLi->rollback() MysqLirollback() N/A 回滚当前事务 @H403_0@ MysqLi->select_db() MysqLi_select_db() N/A 为数据库查询选择默认数据库 @H_403_0@ MysqLi->set_charset() MysqLi_setcharset() N/A 设置默认的客户端字符集 @H403_0@ MysqLi->set_local_infile_default() MysqLi_set_local_infile_default() N/A 清除用户为load data local infile命令定义的处理程序 @H_403_0@ MysqLi->set_local_infile_handler() MysqLi_set_local_infile_handler() N/A 设置LOAD DATA LOCAL INFILE命令执行的回调函数 @H_403_0@ MysqLi->ssl_set() MysqLi_sslset() N/A 使用SSL建立安装连接 @H403_0@ MysqLi->stat() MysqLi_stat() N/A 获取当前系统状态 @H_403_0@ MysqLi->stmt_init() MysqLi_stmt_init() N/A 初始化一个语句并且返回一个MysqLi_stmtprepare使用的对象 @H403_0@ MysqLi->store_result() MysqLi_store_result() N/A 传输最后一个查询的结果集 @H_403_0@ MysqLi->thread_id() MysqLi_threadid() N/A 返回当前连接的线程ID @H403_0@ MysqLi->thread_safe() MysqLi_threadsafe() N/A 返回是否设定了线程安全 @H403_0@ MysqLi->use_result() MysqLi_useresult() N/A 初始化一个结果集的取回 @H4030@ / / @H403_0@ MysqLSTMT @H4030@ 面向对象接口 过程化接口 别名(不要使用) 描述 @H403_0@ 属性 @H_403_0@ $MysqLi_stmt->affected_rows MysqLi_stmt_affected_rows() N/A 返回最后一条倍执行的语句改变,删除或插入的总行数 @H_403_0@ $MysqLi_stmt->errno MysqLi_stmt_errno() N/A 返回最近一次语句调用错误代码 @H_403_0@ $MysqLi_stmt->error MysqLi_stmt_error() N/A 返回最后一条语句错误的字符串描述 @H_403_0@ $MysqLi_stmt->field_count MysqLi_stmt_field_count() N/A 返回给定语句得到的字段数量 @H_403_0@ $MysqLi_stmt->insert_id MysqLi_stmt_insert_id() N/A 获取前一个INSERT操作生成的ID @H_403_0@ $MysqLi_stmt->num_rows MysqLi_stmt_numrows() N/A 返回语句结果集中的行数 @H403_0@ $MysqLi_stmt->param_count MysqLi_stmt_param_count() MysqLi_param_count() 返回给定语句中参数数量 @H_403_0@ $MysqLi_stmt->sqlstate MysqListmtsqlstate() N/A 返回前一个语句操作的sqlSTATE错误代码 @H_403_0@ 方法 @H_403_0@ MysqLi_stmt->attr_get() MysqLi_stmt_attr_get() N/A 用于获取语句属性的当前值 @H_403_0@ MysqLi_stmt->attr_set() MysqLi_stmt_attr_set() N/A 用于修改prepared语句的行为 @H_403_0@ MysqLi_stmt->bind_param() MysqLi_stmt_bind_param() MysqLi_bindparam() 将一个变量作为参数绑定到prepared语句上 @H403_0@ MysqLi_stmt->bind_result() MysqLi_stmt_bind_result() MysqLi_bindresult() 将一个变量绑定到一个prepared语句上用于结果存储 @H403_0@ MysqLi_stmt->close() MysqLi_stmt_close() N/A 关闭一个prepared语句 @H_403_0@ MysqLi_stmt->data_seek() MysqLi_stmt_dataseek() N/A 查看语句结果集中的任意行 @H403_0@ MysqLi_stmt->execute() MysqLi_stmt_execute() MysqLi_execute() 执行一个prepared查询 @H_403_0@ MysqLi_stmt->fetch() MysqLi_stmt_fetch() MysqLifetch() 从一个prepared语句中抓取结果到限定变量中 @H403_0@ MysqLi_stmt->free_result() MysqLi_stmt_freeresult() N/A 释放给定语句处理存储的结果集所占内存 @H403_0@ $MysqLi_stmt->get_result() MysqLi_stmt_get_result N/A 没有文档 仅可用于 MysqLnd。 @H_403_0@ MysqLi_stmt->get_warnings() MysqLi_stmt_getwarnings() N/A 没有文档 @H403_0@ $MysqLi_stmt->more_results() MysqLi_stmt_more_results() N/A 没有文档 仅可用于 MysqLnd。 @H_403_0@ $MysqLi_stmt->next_result() MysqLi_stmt_next_result() N/A 没有文档 仅可用于 MysqLnd。 @H_403_0@ MysqLi_stmt->num_rows() MysqLi_stmt_num_rows() N/A 查阅属性$MysqLi_stmt->numrows @H403_0@ MysqLi_stmt->prepare() MysqLi_stmt_prepare() N/A 准备一个sql语句用于执行 @H_403_0@ MysqLi_stmt->reset() MysqLi_stmtreset() N/A 重置一个prepared语句 @H403_0@ MysqListmt->resultMetadata() MysqLi_stmtresultMetadata() MysqLigetMetadata() 从一个prepared语句返回结果集元数据 @H_403_0@ MysqLi_stmt->send_long_data() MysqLi_stmt_send_long_data() MysqLi_send_longdata() 发送数据块 @H403_0@ MysqLi_stmt->store_result() MysqLi_stmt_storeresult() N/A 从一个prepared语句中传输一个结果集 / / @H403_0@ MysqLiRESULT @H4030@ 面向对象接口 过程化接口 别名(不要使用) 描述 @H403_0@ 属性 @H_403_0@ $MysqLi_result->current_field MysqLi_field_tell() N/A 获取当前字段在结果集指针中的开始位置 @H_403_0@ $MysqLi_result->field_count MysqLi_num_fields() N/A 获取结果中字段数量 @H_403_0@ $MysqLi_result->lengths MysqLi_fetchlengths() N/A 返回结果集中当前行的每列的值得长度,返回数组 @H403_0@ $MysqLi_result->num_rows MysqLi_num_rows() N/A 获取结果中行的数量 @H_403_0@ 方法 @H_403_0@ MysqLi_result->data_seek() MysqLi_dataseek() N/A 将结果中的结果指针调整到任意行 @H403_0@ MysqLi_result->fetch_all() MysqLi_fetch_all() N/A 抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集。仅可用于 MysqLnd。 @H_403_0@ MysqLi_result->fetch_array() MysqLi_fetcharray() N/A 以一个关联数组,数值索引数组,或者两者皆有的方式抓取一行结果 @H403_0@ MysqLi_result->fetch_assoc() MysqLi_fetchassoc() N/A 以一个关联数组方式抓取一行结果 @H403_0@ MysqLi_result->fetch_field_direct() MysqLi_fetch_fielddirect() N/A 抓取一个单字段的元数据 @H403_0@ MysqLi_result->fetch_field() MysqLi_fetchfield() N/A 返回结果集中的下一个字段 @H403_0@ MysqLi_result->fetch_fields() MysqLi_fetchfields() N/A 返回一个代表结果集字段的对象数组 @H403_0@ MysqLi_result->fetch_object() MysqLi_fetchobject() N/A 以一个对象的方式返回一个结果集中的当前行 @H403_0@ MysqLi_result->fetch_row() MysqLi_fetchrow() N/A 以一个枚举数组方式返回一行结果 @H403_0@ MysqLi_result->field_seek() MysqLi_fieldseek() N/A 设置结果指针到特定的字段开始位置 @H403_0@ MysqLi_result->free(),MysqLi_result->close,MysqLi_result->free_result MysqLi_freeresult() N/A 释放与一个结果集相关的内存 @H4030@ */@H403_0@ /注意 MysqLI_STORE_RESULT和MysqLI_USERESULT的区别 @H4030@ 其实这两个参数的区别还是很大的。 @H4030@ (1)区别在于从服务器上检索结果集的行。 @H403_0@ (2)MysqLI_USE_RESULT 启动查询,但实际上并未获取任何行 @H_403_0@ (3)MysqLI_STORERESULT 立即检索所有的行 @H403_0@ (4)MysqLI_STORE_RESULT 从服务器上检索结果集时,就提取了行,并为之分配内存,存储到客户机中,随后调用 @H_403_0@ MysqLi_fetch_array()就再也不会返回错误,因为它仅仅是把行脱离了已经保留结果集的数据结 构,MysqLi_fetcharray()返回 NULL始终表示已经到达结果集的末端。 @H403_0@ (5)MysqLI_USERESULT 本身不检索任何行,而只是启动一个逐行的检索,就是说必须对每行调 用 @H403_0@ MysqLi_fetch_array()来自己完成。既然如此,虽然正常情况下,MysqLi_fetch_array()返回NULL仍然表示此 时已到达结果集的末端,但也可能表示在与服务器通信时发生错误。 @H_403_0@ 如果是MysqLI_USE_RESULT,query以后得到MysqLi_result对象后,执行dataseek会出错,因为 @H403_0@ MysqLi_result::data_seek() [MysqLi-result.data-seek]: Function cannot be used with MysqL_USE_RESULT 与MysqLI_USE_RESULT相比,MysqLI_STORE_RESULT 有着较高的内存和处理需求,因为是在客户机上维护整个结果集,所以内存分配和创建数据结构的耗费是非常巨大的,如果想一次检索多个行,可用 MysqLI_USERESULT。 @H403_0@ MysqLI_USERESULT有着较低的内存需求,因为只需给每次处理的单行分配足够的空间。这样速度就较快,因为不必为结果集建立复杂的数据结构。 @H403_0@ 另一方面,MysqLI_USE_RESULT把较大的负载加到了服务器上,它必须保留结果集中的行,直到客户机看起来适合检索所有的行。 @H_403_0@ /@H_403_0@} $dbHelper=new MysqLiHelp; @H_403_0@$dbHelper->connect('localhost','root','','tt'); //$dbHelper->db->selectdb("tt"); @H403_0@//$dbHelper->db->setcharset("utf8"); @H403_0@//这里如果是MysqLI_USE_RESULT,下面的$dbHelper->dataseek($query,10);就会出错 @H403_0@$query=$dbHelper->query("select id,cateid,title from product limit 22",MysqLI_STORERESULT ); @H403_0@//$query=$dbHelper->query("update product set createtime=UNIXTIMESTAMP() limit 22"); //$query=$dbHelper->query("insert into product(cateid,title,text,createtime) values (2,'test','content',1284822691)"); @H4030@//$query=$dbHelper->query("delete from product where id=1"); @H403_0@//$query=$dbHelper->query("replace into product(id,title,text,createtime) values(1,2,'this is demo',UNIXTIMESTAMP())"); @H403_0@echo $query->num_rows."总数"; //vardump($query); @H403_0@//$row=$dbHelper->fetch_array($query); //vardump($row); @H403_0@//finfo = $dbHelper->fetch_fields($query); //vardump($finfo); @H4030@// foreach ($finfo as $val) { // printf("Name: %s\n",$val->name); @H4030@ // printf("Table: %s\n",$val->table); @H403_0@ // printf("max. Len: %d\n",$val->maxlength); @H4030@ // printf("Flags: %d\n",$val->flags); @H4030@ // printf("Type: %d\n\n",$val->type); @H403_0@// } //如果是查询操作affected_rows行数为1,num_rows为查询结果行数,numfields为字段数目 @H403_0@//如果是更新或者删除操作affected_rows为受影响的行数,num_rows为null,numfields为null @H4030@// @H403_0@$dbHelper->data_seek($query,10); $row=$dbHelper->fetch_row($query); vardump($row); echo "影响行数:","
"; @H
403_0@var_dump($dbHelper->affectedrows()); @H403_0@//var_dump($dbHelper->db->affected_rows ); echo "查询行数","
"; @H_403_0@var_dump($dbHelper->numrows($query)); @H4030@echo "列数:","
"; @H
403_0@var_dump($dbHelper->numfields($query)); @H4030@//第1种 @H403_0@$sql="select id,title from product where cateid=? and title like ? and createtime<".time(); $stmt=$dbHelper->prepare($sql); vardump($stmt); @H403_0@$stmt->bindparam('is',$cateid,$title); $title="%%"; @H4030@$cateid=10; @H4030@$stmt->execute(); @H403_0@$stmt->bindresult($col1,$col2,$col3); @H4030@/ fetch values /@H4030@while ($stmt->fetch()) { @H4030@ printf("%s %s"."
",$col1,$col3); @H
4030@} echo "
"; @H
4030@$title="%%"; @H4030@$cateid=4; @H4030@$stmt->execute(); @H403_0@$stmt->bindresult($col1,$col3); @H4030@/ fetch values /@H4030@while ($stmt->fetch()) { @H4030@ printf("%s %s %s"."
",$col3); @H
4030@} $stmt->close(); @H403_0@//第2种 $stmt=$dbHelper->db->stmtinit(); @H403_0@$stmt->prepare($sql); @H_403_0@$stmt->bindparam('is',$col3); @H4030@/ fetch values /@H4030@while ($stmt->fetch()) { @H4030@ //printf("%s %s"."
",$col3); @H
403_0@} echo "
开始multiquery:
"; @H
403_0@//multiquery实例 @H403_0@//multi_query()方法的返回值,以及 //MysqLi的属性errno、error、info等只与第一条sql命令有关,无法判断第二条及以后的命令是否在执行时发生了错误。所以在执行 //multi_query()方法的返回值是TRUE时,并不意味着后续命令在执行时没有出错。 $sql="select id,title from product where cateid=4;"; @H_403_0@$sql.="select id,title from product where cateid=10"; $query=$dbHelper->db->multi_query($sql); if($query) @H_4030@{ @H4030@ do { @H4030@ / store first result set /@H403_0@ //下面两种方法有什么区别? @H_403_0@ // if ($result = $dbHelper->db->storeresult()) { @H403_0@ // while ($row = $result->fetchrow()) { @H4030@ // $data[]=$row; @H4030@ // } @H4030@ // $result->free(); @H4030@ // } @H403_0@ if ($result = $dbHelper->db->use_result()) {//返回MysqLiresult类型 @H403_0@ //$result->dataseek(0);//返回bool @H403_0@ while ($row = $result->fetchrow()) { @H4030@ $data[]=$row; @H4030@ } @H4030@ //$result->close(); @H4030@ } @H4030@ / print divider /@H403_0@ if ($dbHelper->db->moreresults()) { @H4030@ printf("-----------------\n"); @H403_0@ $data[]="___"; @H_4030@ } @H403_0@ } while ($dbHelper->db->nextresult()); } @H403_0@vardump($data); @H4030@//exit; @H4030@//执行事务 实例 @H4030@//确保操作的表时innodb类型的表 @H4030@//如果是MyISAM,逻辑出错的话, 会执行所有操作,不回滚 @H4030@$price=1; @H4030@$success=true; @H4030@$dbHelper->db->autocommit(0); @H4030@$result=$dbHelper->query("update product set cateid=cateid-$price where id=1000" ); @H403_0@if(!$result || $dbHelper->affectedrows()!=1) @H4030@{ @H4030@ $success=false; } $result=$dbHelper->query("update product set cateid=cateid+$price where id=2"); @H403_0@if(!$result || $dbHelper->affectedrows()!=1) @H4030@{ @H4030@ $success=false; } if($success) @H4030@{ @H4030@$dbHelper->db->commit(); @H4030@echo "成功"; }else@H4030@{ @H4030@$dbHelper->db->rollback(); @H4030@echo "失败"; } @H4030@$dbHelper->db->autocommit(1); @H403_0@//var_dump( $dbHelper->insertid()); @H403_0@var_dump($MysqL_debug_query); //打印SQL查询信息 @H_4030@// @H403_0@?>

原文链接:https://www.f2er.com/php/25551.html

猜你在找的PHP相关文章