安康免费做网站,湖州品牌网站建设,网站管理员权限设置,公司做网站之前要准备什么php操作mysqli(示例代码)更新时间#xff1a;2013年10月28日 08:56:20 作者#xff1a;php操作mysqli的示例代码。需要的朋友可以过来参考下#xff0c;希望对大家有所帮助define(MYSQL_OPEN_LOGS,true);class mysqliHelp{private $db;public function __cons…php操作mysqli(示例代码)更新时间2013年10月28日 08:56:20 作者php操作mysqli的示例代码。需要的朋友可以过来参考下希望对大家有所帮助define(MYSQL_OPEN_LOGS,true);class mysqliHelp{private $db;public function __construct(){//如果要查询日志log的话怎么办}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,$charSetutf8,$forcefalse){if($this-db ($this-db instanceof mysqli) !$force){return ;}$this-dbnew 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();// 关联数组}function fetch_row($query){return $query-fetch_row();// 索引数组数字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 ,$resultmodeMYSQLI_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/?typemysqldberrno.rawurlencode($dberrno).dberror.rawurlencode($dberror);echo MySQL ErrorMessage: $messageSQL: $sqlError: $dberrorErrno.: $dberrnoClick here to seek help.;exit();}function __destruct(){$this-dbnull;}/* MySQLi类面向对象接口 面向过程接口 别名 描述属性$mysqli-affected_rows mysqli_affected_rows() N/A 获取前一个Mysql操作的受影响行数$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 返回最后一次连接调用的错误代码$mysqli-connect_error mysqli_connect_error() N/A 返回一个字符串描述的最后一次连接调用的错误代码$mysqli-errno mysqli_errno() N/A 返回最近的函数调用产生的错误代码$mysqli-error mysqli_error() N/A 返回字符串描述的最近一次函数调用产生的错误代码$mysqli-field_count mysqli_field_count() N/A 返回最近一次查询获取到的列的数目$mysqli-host_info mysqli_get_host_info() N/A 返回一个能够代表使用的连接类型的字符串$mysqli-protocol_version mysqli_get_proto_info() N/A 返回使用的Mysql协议的版本信息$mysqli-server_info mysqli_get_server_info() N/A 返回Mysql服务端版本的信息$mysqli-server_version mysqli_get_server_version() N/A 返回整型的Mysql服务端版本信息$mysqli-info mysqli_info() N/A 最近一次执行的查询的检索信息$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 返回给定链接最后一次查询的警告数量方法mysqli-autocommit() mysqli_autocommit() N/A 打开或关闭数据库的自动提交功能mysqli-change_user() mysqli_change_user() N/A 更改指定数据库连接的用户mysqli-character_set_name(), mysqli-client_encoding mysqli_character_set_name() mysqli_client_encoding() 返回数据库连接的默认字符集mysqli-close() mysqli_close() N/A 关闭先前打开的数据库连接mysqli-commit() mysqli_commit() N/A 提交当前事务mysqli::__construct() mysqli_connect() N/A 打开一个到Mysql服务端的新的连接注意静态方法mysqli-debug() mysqli_debug() N/A 执行调试操作mysqli-dump_debug_info() mysqli_dump_debug_info() N/A 将调试信息转储到日志中mysqli-get_charset() mysqli_get_charset() N/A 返回对象的字符集mysqli-get_connection_stats() mysqli_get_connection_stats() N/A 返回客户端连接的统计信息。 仅可用于 mysqlnd。mysqli-get_client_info() mysqli_get_client_info() N/A 返回字符串描述的Mysql客户端版本mysqli-get_client_stats() mysqli_get_client_stats() N/A 返回每个客户端进程的统计信息。 仅可用于 mysqlnd。mysqli-get_cache_stats() mysqli_get_cache_stats() N/A 返回客户端的zval缓存统计信息。 仅可用于 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 请求服务器杀死一个Mysql线程mysqli-more_results() mysqli_more_results() N/A 检查一个多语句查询是否还有其他查询结果集mysqli-multi_query() mysqli_multi_query() N/A 在数据库上执行一个多语句查询mysqli-next_result() mysqli_next_result() N/A 从multi_query中准备下一个结果集mysqli-options() mysqli_options() mysqli_set_opt() 设置选项mysqli-ping() mysqli_ping() N/A ping一个服务器连接或者如果那个连接断了尝试重连mysqli-prepare() mysqli_prepare() N/A 准备一个用于执行的SQL语句mysqli-query() mysqli_query() N/A 在数据库上执行一个查询mysqli-real_connect() mysqli_real_connect() N/A 打开一个到Mysql服务端的连接mysqli-real_escape_string(), mysqli-escape_string() mysqli_real_escape_string() mysqli_escape_string() 转义字符串中用于SQL语句中的特殊字符这个转换会考虑连接的当前字符集。mysqli-real_query() mysqli_real_query() N/A 执行一个SQL查询mysqli-rollback() mysqli_rollback() N/A 回滚当前事务mysqli-select_db() mysqli_select_db() N/A 为数据库查询选择默认数据库mysqli-set_charset() mysqli_set_charset() N/A 设置默认的客户端字符集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 设置LOAD DATA LOCAL INFILE命令执行的回调函数mysqli-ssl_set() mysqli_ssl_set() N/A 使用SSL建立安装连接mysqli-stat() mysqli_stat() N/A 获取当前系统状态mysqli-stmt_init() mysqli_stmt_init() N/A 初始化一个语句并且返回一个mysqli_stmt_prepare使用的对象mysqli-store_result() mysqli_store_result() N/A 传输最后一个查询的结果集mysqli-thread_id() mysqli_thread_id() N/A 返回当前连接的线程IDmysqli-thread_safe() mysqli_thread_safe() N/A 返回是否设定了线程安全mysqli-use_result() mysqli_use_result() N/A 初始化一个结果集的取回*//*MySQL_STMT面向对象接口 过程化接口 别名(不要使用) 描述属性$mysqli_stmt-affected_rows mysqli_stmt_affected_rows() N/A 返回最后一条倍执行的语句改变删除或插入的总行数$mysqli_stmt-errno mysqli_stmt_errno() N/A 返回最近一次语句调用的错误代码$mysqli_stmt-error mysqli_stmt_error() N/A 返回最后一条语句错误的字符串描述$mysqli_stmt-field_count mysqli_stmt_field_count() N/A 返回给定语句得到的字段数量$mysqli_stmt-insert_id mysqli_stmt_insert_id() N/A 获取前一个INSERT操作生成的ID$mysqli_stmt-num_rows mysqli_stmt_num_rows() N/A 返回语句结果集中的行数$mysqli_stmt-param_count mysqli_stmt_param_count() mysqli_param_count() 返回给定语句中参数数量$mysqli_stmt-sqlstate mysqli_stmt_sqlstate() N/A 返回前一个语句操作的SQLSTATE错误代码方法mysqli_stmt-attr_get() mysqli_stmt_attr_get() N/A 用于获取语句属性的当前值mysqli_stmt-attr_set() mysqli_stmt_attr_set() N/A 用于修改prepared语句的行为mysqli_stmt-bind_param() mysqli_stmt_bind_param() mysqli_bind_param() 将一个变量作为参数绑定到prepared语句上mysqli_stmt-bind_result() mysqli_stmt_bind_result() mysqli_bind_result() 将一个变量绑定到一个prepared语句上用于结果存储mysqli_stmt-close() mysqli_stmt_close() N/A 关闭一个prepared语句mysqli_stmt-data_seek() mysqli_stmt_data_seek() N/A 查看语句结果集中的任意行mysqli_stmt-execute() mysqli_stmt_execute() mysqli_execute() 执行一个prepared查询mysqli_stmt-fetch() mysqli_stmt_fetch() mysqli_fetch() 从一个prepared语句中抓取结果到限定变量中mysqli_stmt-free_result() mysqli_stmt_free_result() N/A 释放给定语句处理存储的结果集所占内存$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_rowsmysqli_stmt-prepare() mysqli_stmt_prepare() N/A 准备一个SQL语句用于执行mysqli_stmt-reset() mysqli_stmt_reset() N/A 重置一个prepared语句mysqli_stmt-result_metadata() mysqli_stmt_result_metadata() mysqli_get_metadata() 从一个prepared语句返回结果集元数据mysqli_stmt-send_long_data() mysqli_stmt_send_long_data() mysqli_send_long_data() 发送数据块mysqli_stmt-store_result() mysqli_stmt_store_result() N/A 从一个prepared语句中传输一个结果集*//*MySQLi_RESULT面向对象接口 过程化接口 别名(不要使用) 描述属性$mysqli_result-current_field mysqli_field_tell() N/A 获取当前字段在结果集指针中的开始位置$mysqli_result-field_count mysqli_num_fields() N/A 获取结果中字段数量$mysqli_result-lengths mysqli_fetch_lengths() N/A 返回结果集中当前行的每列的值得长度返回数组$mysqli_result-num_rows mysqli_num_rows() N/A 获取结果中行的数量方法mysqli_result-data_seek() mysqli_data_seek() N/A 将结果中的结果指针调整到任意行mysqli_result-fetch_all() mysqli_fetch_all() N/A 抓取所有的结果行并且以关联数据数值索引数组或者两者皆有的方式返回结果集。仅可用于 mysqlnd。mysqli_result-fetch_array() mysqli_fetch_array() N/A 以一个关联数组数值索引数组或者两者皆有的方式抓取一行结果mysqli_result-fetch_assoc() mysqli_fetch_assoc() N/A 以一个关联数组方式抓取一行结果mysqli_result-fetch_field_direct() mysqli_fetch_field_direct() N/A 抓取一个单字段的元数据mysqli_result-fetch_field() mysqli_fetch_field() N/A 返回结果集中的下一个字段mysqli_result-fetch_fields() mysqli_fetch_fields() N/A 返回一个代表结果集字段的对象数组mysqli_result-fetch_object() mysqli_fetch_object() N/A 以一个对象的方式返回一个结果集中的当前行mysqli_result-fetch_row() mysqli_fetch_row() N/A 以一个枚举数组方式返回一行结果mysqli_result-field_seek() mysqli_field_seek() N/A 设置结果指针到特定的字段开始位置mysqli_result-free(), mysqli_result-close, mysqli_result-free_result mysqli_free_result() N/A 释放与一个结果集相关的内存*//*注意 MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别其实这两个参数的区别还是很大的。(1)区别在于从服务器上检索结果集的行。(2)MYSQLI_USE_RESULT 启动查询但实际上并未获取任何行(3)MYSQLI_STORE_RESULT 立即检索所有的行(4)MYSQLI_STORE_RESULT 从服务器上检索结果集时就提取了行并为之分配内存存储到客户机中随后调用mysqli_fetch_array()就再也不会返回错误因为它仅仅是把行脱离了已经保留结果集的数据结 构mysqli_fetch_array()返回 NULL始终表示已经到达结果集的末端。(5)MYSQLI_USE_RESULT 本身不检索任何行而只是启动一个逐行的检索就是说必须对每行调 用mysqli_fetch_array()来自己完成。既然如此虽然正常情况下mysqli_fetch_array()返回NULL仍然表示此 时已到达结果集的末端但也可能表示在与服务器通信时发生错误。如果是MYSQLI_USE_RESULTquery以后得到mysqli_result对象后执行data_seek会出错因为mysqli_result::data_seek() [mysqli-result.data-seek]: Function cannot be used with MYSQL_USE_RESULT与MYSQLI_USE_RESULT相比MYSQLI_STORE_RESULT 有着较高的内存和处理需求因为是在客户机上维护整个结果集所以内存分配和创建数据结构的耗费是非常巨大的如果想一次检索多个行可用 MYSQLI_USE_RESULT。MYSQLI_USE_RESULT有着较低的内存需求因为只需给每次处理的单行分配足够的空间。这样速度就较快因为不必为结果集建立复杂的数据结构。另一方面MYSQLI_USE_RESULT把较大的负载加到了服务器上它必须保留结果集中的行直到客户机看起来适合检索所有的行。*/}$dbHelpernew 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 createtimeUNIX_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 id1);//$query$dbHelper-query(replace into product(id,cateid,title,text,createtime) values(1,2,this is demo,test,UNIX_TIMESTAMP()));echo $query-num_rows.总数;//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行数为1num_rows为查询结果行数num_fields为字段数目//如果是更新或者删除操作affected_rows为受影响的行数num_rows为null,num_fields为null//$dbHelper-data_seek($query,10);$row$dbHelper-fetch_row($query);var_dump($row);echo 影响行数:, ;var_dump($dbHelper-affected_rows());//var_dump($dbHelper-db-affected_rows );echo 查询行数,;var_dump($dbHelper-num_rows($query));echo 列数,;var_dump($dbHelper-num_fields($query));//第1种$sqlselect id,cateid,title from product where cateid? and title like ? and createtime$stmt$dbHelper-prepare($sql);var_dump($stmt);$stmt-bind_param(is,$cateid,$title);$title%%;$cateid10;$stmt-execute();$stmt-bind_result($col1, $col2,$col3);/* fetch values */while ($stmt-fetch()) {printf(%s %s., $col1, $col3);}echo ;$title%%;$cateid4;$stmt-execute();$stmt-bind_result($col1, $col2,$col3);/* fetch values */while ($stmt-fetch()) {printf(%s %s %s., $col1, $col2,$col3);}$stmt-close();//第2种$stmt$dbHelper-db-stmt_init();$stmt-prepare($sql);$stmt-bind_param(is,$cateid,$title);$title%%;$cateid10;$stmt-execute();$stmt-bind_result($col1, $col2,$col3);/* fetch values */while ($stmt-fetch()) {//printf(%s %s., $col1, $col3);}echo 开始multi_query:;//multi_query实例//multi_query()方法的返回值以及 //mysqli的属性errno、error、info等只与第一条SQL命令有关无法判断第二条及以后的命令是否在执行时发生了错误。所以在执行 //multi_query()方法的返回值是TRUE时并不意味着后续命令在执行时没有出错。$sqlselect id,cateid,title from product where cateid4;;$sql.select id,cateid,title from product where cateid10;$query$dbHelper-db-multi_query($sql);if($query){do {/* store first result set *///下面两种方法有什么区别?// 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);//返回boolwhile ($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;//执行事务 实例//确保操作的表时innodb类型的表//如果是MyISAM逻辑出错的话 会执行所有操作不回滚$price1;$successtrue;$dbHelper-db-autocommit(0);$result$dbHelper-query(update product set cateidcateid-$price where id1000 );if(!$result || $dbHelper-affected_rows()!1){$successfalse;}$result$dbHelper-query(update product set cateidcateid$price where id2);if(!$result || $dbHelper-affected_rows()!1){$successfalse;}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查询信息//?相关文章 这篇文章主要介绍了详解PHP函数 strip_tags 处理字符串缺陷bug的相关资料,需要的朋友可以参考下2017-06-06这篇文章主要介绍了PHP上传图片到数据库并显示的实例代码有兴趣的朋友们参考下。2019-12-12在用wampserver集成开发环境下有时会碰到一些开源程序需要zend optimizer的支持下面我用的wamp的版本是2.0,optimizer的版本是ZendOptimizer-3.3.3-Windows-i3862013-10-10本篇文章主要介绍了phpwebSoket搭建chatServer示例(附源码)的资料,这里整理了详细的代码,有需要的小伙伴可以参考下。2017-02-02这篇文章主要介绍了使用Rancher在K8S上部署高性能PHP应用程序,本文给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值需要的朋友可以参考下2020-07-07这篇文章主要介绍了thinkPHPLayUI 流加载实现功能,本文通过实例代码给大家介绍的非常详细具有一定的参考借鉴价值需要的朋友可以参考下2019-09-09这篇文章主要介绍了PHP zip扩展Linux下安装过程分享,需要的朋友可以参考下2014-05-05今天小编就为大家分享一篇laravel5.5安装jwt-auth 生成token令牌的示例具有很好的参考价值希望对大家有所帮助。一起跟随小编过来看看吧2019-10-10这篇文章主要介绍了PHP的Laravel框架结合MySQL与Redis数据库的使用部署,需要的朋友可以参考下2016-03-03这篇文章主要介绍了Zend Framework入门之环境配置及第一个Hello World示例,详细讲述了Zend Framework环境搭建与配置,以及实现第一个Hello World程序的方法,并附带demo源码供读者下载参考,需要的朋友可以参考下2016-03-03最新评论