加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php的mysql\mysqli\PDO(二)mysqli

发布时间:2020-12-13 21:23:16 所属栏目:PHP教程 来源:网络整理
导读:原文链接:http://www.orlion.ga/1147/ mysqli有面向对象风格和面向过程风格,个人感觉还是用面向对象风格比较好(毕竟是面向对象 ) 1、mysqli::_construct() mysqli::__construct?([?string?$host?=?ini_get("mysqli.default_host")?[,?string?$username?=?i

原文链接:http://www.orlion.ga/1147/

mysqli有面向对象风格和面向过程风格,个人感觉还是用面向对象风格比较好(毕竟是面向对象

)

1、mysqli::_construct()

mysqli::__construct?([?string?$host?=?ini_get("mysqli.default_host")?[,?string?$username?=?ini_get("mysqli.default_user")?[,?string?$passwd?=?ini_get("mysqli.default_pw")?[,?string$dbname?=?""?[,?int?$port?=?ini_get("mysqli.default_port")?[,?string?$socket?=?ini_get("mysqli.default_socket")?]]]]]]?)

mysqli?mysqli_connect?([?string?$host?=?ini_get("mysqli.default_host")?[,?string?$username=?ini_get("mysqli.default_user")?[,string?$dbname?=?""?[,?string?$socket?=?ini_get("mysqli.default_socket")?]]]]]]?)

????$host、$username、$passwd、$dbname、$port不用多说了,规则与mysql差不多。

2、mysqli::close()

//面向对象风格
bool?mysqli::close?(?void?)
//面向过程风格
bool?mysqli_close?(?mysqli?$link?)
成功时返回?TRUE,?或者在失败时返回?FALSE。$link:由mysqli_connect()?或?mysqli_init(void)?(该函数提供一个mysqli对象供mysqli_options()和mysqli_real_connect()使用)返回的链接标识。

????这个与mysql_close()差别在于mysql_close()可以不提供参数而关闭上一个连接。

3、mysqli::query()

mixed?mysqli::query?(?string?$query?[,?int?$resultmode?=?MYSQLI_STORE_RESULT?]?)

mixed?mysqli_query?(?mysqli?$link?,?string?$query?[,?int?$resultmode?=?MYSQLI_STORE_RESULT]?)

? ? $resultmode有两种取值方式:MYSQLI_USE_RESULT?和MYSQLI_STORE_RESULT(默认值),区别在于MYSQLI_USE_RESULT模式下取结果时每次都要从服务器上取结果而MYSQLI_STORE_RESULT则是将结果一步到位缓存到用户程序空间中。所以当查询结果数据量特别大时用MYSQLI_USE_RESULT,MYSQLI_STORE_RESUL则速度非常快。

????返回值:失败时返回?FALSE,通过mysqli_query()?成功执行SELECT,SHOW,DESCRIBE或?EXPLAIN查询会返回一个mysqli_result对象,其他查询则返回TRUE

?

4、遍历结果函数

//?面向对象风格
mixed?mysqli_result::fetch_array?([?int?$resulttype?=?MYSQLI_BOTH?]?)
//?面向过程风格
mixed?mysqli_fetch_array?(?mysqli_result?$result?[,?int?$resulttype?=?MYSQLI_BOTH?]?)

????例:

$query?=?"SELECT?Name,?CountryCode?FROM?City?ORDER?by?ID?LIMIT?3";
$result?=?$mysqli->query($query);

/*?numeric?array?*/
$row?=?$result->fetch_array(MYSQLI_NUM);
printf?("%s?(%s)n",?$row[0],?$row[1]);

/*?associative?array?*/
$row?=?$result->fetch_array(MYSQLI_ASSOC);
printf?("%s?(%s)n",?$row["Name"],?$row["CountryCode"]);

/*?associative?and?numeric?array?*/
$row?=?$result->fetch_array(MYSQLI_BOTH);
printf?("%s?(%s)n",?$row["CountryCode"]);

????类似的函数有:mysqli_result::fetch_assoc和mysqli_result::fetch_row、mysqli_result::fetch_object。

5、释放result函数

//?面向对象风格
void?mysqli_result::free?(?void?)
oid?mysqli_result::close?(?void?)
void?mysqli_result::free_result?(?void?)
//?面向过程风格
void?mysqli_free_result?(?mysqli_result?$result?)

6、其他函数

????mysqli::real_escape_string(string $sql)转义sql。

????一次执行多条sql可以用mysqli对象的multi_query()方法:

bool?mysqli::multi_query?(?string?$query?)

????传递参数时需要把多条SQL命令写在同一个字符串中作为参数传给multi_query(),多个SQL之间使用分号(;)分隔。如果第一条SQL命令在执行时没有出错,这个方法就会返回TRUE,否则将返回FALSE。

????因为multi_query参数中每条SQL都可能返回一个结果,所以处理过程就变成了:

if?($mysqli->multi_query($sql))?{
????do?{
????????if?($result?=?$mysqli->store_result())?{
????????????while?($row?=?$result->fetch_row())?{
????????????????foreach?($row?as?$data)?{
????????????????????var_dump($data);
????????????????}
????????????}
????????????$result->close();
????????}
????????if?($mysqli->more_results())?{
????????????echo?'----------------';
????????}
????}?while($mysqli->next_result());
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读