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
@H403_0@ sql: $sql
@H_4030@ Error: $dberror
@H4030@ Errno.: $dberrno
@H403_0@ <a href=\"$help_link\" target=\"blank\">Click here to seek help. @H4030@
"; @H
4030@ 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()
MysqLi
debug() N/A 执行调试操作 @H403_0@
MysqLi->dump_debug_info()
MysqLi_dump_debug
info() N/A 将调试信息转储到日志中 @H403_0@
MysqLi->get_charset()
MysqLi_get
charset() 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_server
info() N/A 没有文档 @H403_0@
MysqLi->get_warnings()
MysqLi_get
warnings() 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 从multi
query中准备下一个结果集 @H403_0@
MysqLi->options()
MysqLi_options()
MysqLi_set
opt() 设置选项 @H403_0@
MysqLi->ping()
MysqLi
ping() 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()
MysqLi
rollback() N/A 回滚当前事务 @H403_0@
MysqLi->select_db()
MysqLi_select_db() N/A 为
数据库查询选择默认
数据库 @H_
403_0@
MysqLi->set_charset()
MysqLi_set
charset() 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_ssl
set() N/A 使用SSL建立安装连接 @H403_0@
MysqLi->stat()
MysqLi_stat() N/A
获取当前系统状态 @H_
403_0@
MysqLi->stmt_init()
MysqLi_stmt_init() N/A 初始化一个语句并且返回一个
MysqLi_stmt
prepare使用的对象 @H403_0@
MysqLi->store_result()
MysqLi_store_result() N/A 传输最后一个
查询的结果集 @H_
403_0@
MysqLi->thread_id()
MysqLi_thread
id() N/A 返回当前连接的线程ID @H403_0@
MysqLi->thread_safe()
MysqLi_thread
safe() N/A 返回是否设定了线程安全 @H403_0@
MysqLi->use_result()
MysqLi_use
result() 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_num
rows() N/A 返回语句结果集中的行数 @H403_0@ $
MysqLi_stmt->param_count
MysqLi_stmt_param_count()
MysqLi_param_count() 返回给定语句中参数
数量 @H_
403_0@ $
MysqLi_stmt->
sqlstate
MysqLi
stmtsqlstate() 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_bind
param() 将一个变量作为参数绑定到prepared语句上 @H403_0@
MysqLi_stmt->bind_result()
MysqLi_stmt_bind_result()
MysqLi_bind
result() 将一个变量绑定到一个prepared语句上用于结果存储 @H403_0@
MysqLi_stmt->close()
MysqLi_stmt_close() N/A
关闭一个prepared语句 @H_
403_0@
MysqLi_stmt->data_seek()
MysqLi_stmt_data
seek() N/A 查看语句结果集中的任意行 @H403_0@
MysqLi_stmt->execute()
MysqLi_stmt_execute()
MysqLi_execute() 执行一个prepared
查询 @H_
403_0@
MysqLi_stmt->fetch()
MysqLi_stmt_fetch()
MysqLi
fetch() 从一个prepared语句中抓取结果到限定变量中 @H403_0@
MysqLi_stmt->free_result()
MysqLi_stmt_free
result() N/A 释放给定语句处理存储的结果集所占内存 @H403_0@ $
MysqLi_stmt->get_result()
MysqLi_stmt_get_result N/A 没有文档 仅可用于
MysqLnd。 @H_
403_0@
MysqLi_stmt->get_warnings()
MysqLi_stmt_get
warnings() 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->num
rows @H403_0@
MysqLi_stmt->prepare()
MysqLi_stmt_prepare() N/A 准备一个
sql语句用于执行 @H_
403_0@
MysqLi_stmt->reset()
MysqLi_stmt
reset() N/A 重置一个prepared语句 @H403_0@
MysqLi
stmt->resultMetadata()
MysqLi_stmt
resultMetadata()
MysqLi
getMetadata() 从一个prepared语句返回结果集元数据 @H_
403_0@
MysqLi_stmt->send_long_data()
MysqLi_stmt_send_long_data()
MysqLi_send_long
data() 发送数据块 @H403_0@
MysqLi_stmt->store_result()
MysqLi_stmt_store
result() N/A 从一个prepared语句中传输一个结果集 / / @H403_0@
MysqLi
RESULT @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_fetch
lengths() N/A 返回结果集中当前行的每列的值得长度,返回数组 @H403_0@ $
MysqLi_result->num_rows
MysqLi_num_rows() N/A
获取结果中行的
数量 @H_
403_0@
方法 @H_
403_0@
MysqLi_result->data_seek()
MysqLi_data
seek() N/A 将结果中的结果指针调整到任意行 @H403_0@
MysqLi_result->fetch_all()
MysqLi_fetch_all() N/A 抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集。仅可用于
MysqLnd。 @H_
403_0@
MysqLi_result->fetch_array()
MysqLi_fetch
array() N/A 以一个关联数组,数值索引数组,或者两者皆有的方式抓取一行结果 @H403_0@
MysqLi_result->fetch_assoc()
MysqLi_fetch
assoc() N/A 以一个关联数组方式抓取一行结果 @H403_0@
MysqLi_result->fetch_field_direct()
MysqLi_fetch_field
direct() N/A 抓取一个单字段的元数据 @H403_0@
MysqLi_result->fetch_field()
MysqLi_fetch
field() N/A 返回结果集中的下一个字段 @H403_0@
MysqLi_result->fetch_fields()
MysqLi_fetch
fields() N/A 返回一个代表结果集字段的对象数组 @H403_0@
MysqLi_result->fetch_object()
MysqLi_fetch
object() N/A 以一个对象的方式返回一个结果集中的当前行 @H403_0@
MysqLi_result->fetch_row()
MysqLi_fetch
row() N/A 以一个枚举数组方式返回一行结果 @H403_0@
MysqLi_result->field_seek()
MysqLi_field
seek() N/A 设置结果指针到特定的字段开始位置 @H403_0@
MysqLi_result->free(),
MysqLi_result->close,
MysqLi_result->free_result
MysqLi_free
result() 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->select
db("tt"); @H403_0@//$dbHelper->db->set
charset("utf8"); @H403_0@//这里如果是
MysqLI_USE_RESULT,下面的$dbHelper->data
seek($query,10);就会出错 @H403_0@$query=$dbHelper->query("select id,cateid,title from product limit 22",
MysqLI_STORE
RESULT ); @H403_0@//$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)"); @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',UNIX
TIMESTAMP())"); @H403_0@echo $query->num_rows."总数"; //var
dump($query); @H403_0@//$row=$dbHelper->fetch_array($query); //var
dump($row); @H403_0@//finfo = $dbHelper->fetch_fields($query); //var
dump($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->max
length); @H4030@ // printf("Flags: %d\n",$val->flags); @H4030@ // printf("Type: %d\n\n",$val->type); @H403_0@// } //如果是
查询操作affected_rows行数为1,num_rows为
查询结果行数,num
fields为字段数目 @H403_0@//如果是更新或者
删除操作affected_rows为受影响的行数,num_rows为null,num
fields为null @H4030@// @H403_0@$dbHelper->data_seek($query,10); $row=$dbHelper->fetch_row($query); var
dump($row); echo "影响行数:","
"; @H403_0@var_dump($dbHelper->affected
rows()); @H403_0@//var_dump($dbHelper->db->affected_rows ); echo "
查询行数","
"; @H_
403_0@var_dump($dbHelper->num
rows($query)); @H4030@echo "列数:","
"; @H403_0@var_dump($dbHelper->num
fields($query)); @H4030@//第1种 @H403_0@$
sql="select id,title from product where cateid=? and title like ? and createtime<".time(); $stmt=$dbHelper->prepare($
sql); var
dump($stmt); @H403_0@$stmt->bind
param('is',$cateid,$title); $title="%%"; @H4030@$cateid=10; @H4030@$stmt->execute(); @H403_0@$stmt->bind
result($col1,$col2,$col3); @H4030@/ fetch values /@H4030@while ($stmt->fetch()) { @H4030@ printf("%s %s"."
",$col1,$col3); @H4030@} echo "
"; @H4030@$title="%%"; @H4030@$cateid=4; @H4030@$stmt->execute(); @H403_0@$stmt->bind
result($col1,$col3); @H4030@/ fetch values /@H4030@while ($stmt->fetch()) { @H4030@ printf("%s %s %s"."
",$col3); @H4030@} $stmt->close(); @H403_0@//第2种 $stmt=$dbHelper->db->stmt
init(); @H403_0@$stmt->prepare($
sql); @H_
403_0@$stmt->bind
param('is',$col3); @H4030@/ fetch values /@H4030@while ($stmt->fetch()) { @H4030@ //printf("%s %s"."
",$col3); @H403_0@} echo "
开始multi
query:
"; @H403_0@//multi
query实例 @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->store
result()) { @H403_0@ // while ($row = $result->fetch
row()) { @H4030@ // $data[]=$row; @H4030@ // } @H4030@ // $result->free(); @H4030@ // } @H403_0@ if ($result = $dbHelper->db->use_result()) {//返回
MysqLi
result类型 @H403_0@ //$result->data
seek(0);//返回bool @H403_0@ while ($row = $result->fetch
row()) { @H4030@ $data[]=$row; @H4030@ } @H4030@ //$result->close(); @H4030@ } @H4030@ / print divider /@H403_0@ if ($dbHelper->db->more
results()) { @H4030@ printf("-----------------\n"); @H403_0@ $data[]="_
__"; @H_
4030@ } @H403_0@ } while ($dbHelper->db->next
result()); } @H403_0@var
dump($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->affected
rows()!=1) @H4030@{ @H4030@ $success=false; } $result=$dbHelper->query("update product set cateid=cateid+$price where id=2"); @H403_0@if(!$result || $dbHelper->affected
rows()!=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->insert
id()); @H403_0@var_dump($
MysqL_debug_query); //打印
SQL查询信息 @H_
4030@// @H403_0@?>
原文链接:https://www.f2er.com/php/25551.html