1.建立、关闭与MySQL服务器的连接
1)连接指定的mysql服务器
$mysqli_connect=@mysqli_connect($host, $user, $password,$database,$port);
2)连接错误时的提示
int mysqli_connect_errno ();//返回最后一次连接调用的错误代码
string mysqli_connect_error ();//返回一个字符串描述的最后一次连接调用的错误代码
3)设置默认字符编码
bool mysqli_set_charset ( mysqli $link , string $charset )
4)选择特定的数据库
bool mysqli_select_db ( mysqli $link , string $dbname);
5)关闭与mysql服务器的连接
bool mysqli_close ( mysqli $link );
2.执SQL语句
1)对数据库执行一条SQL语句
1>mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] );
①对于insert,update,delete等不会返回数据的SQL语句,在执行没有错误时将返回true。
②对于返回数据的SQL语句执行成功的时候会返回结果集对象可以使用操作结果集对象的函数来从中获取数据
③MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT决定了mysqli client和server之间取结果集的方式。
MYSQLI_STORE_RESULT:执行SQL时提取结果集返回给client,并分配内存,存储到用户程序空间中,之后mysqli_fetch_array()
相当于是从本地取数据;而MYSQLI_USE_RESULT方式下,mysqli_fetch_array()每次都要向server请求结果行。
MYSQLI_USE_RESULT:执行SQL的时候并没有从server将结果集取回
2>bool mysqli_real_query ( mysqli $link , string $query );
也可以使用本函数对数据库执行一条SQL语句,返回结果为布尔值,不返回结果集。
如果想获取结果集可以使用mysqli_store_result()获取结果集对象.
3>如果在执行SQL语句的时候发生错误,以上两个函数都将返回false,并且可以使用以下函数处理错误原因
int mysqli_errno ( mysqli $link );
string mysqli_error ( mysqli $link );
2)操作结果集对象的函数
1>从结果集对象中解析数据的常见函数
①以索引数组的方式获取一条记录的数据
mixed mysqli_fetch_row ( mysqli_result $result );
重复使用以获取下一条记录的数据
②以关联数组的方式获取一条记录的数据
array mysqli_fetch_assoc ( mysqli_result $result );
重复使用以获取下一条记录的数据
③以索引数组或关联数组的方式获取一条记录的数据
mixed mysqli_fetch_array ( mysqli_result $result [, int $resulttype = MYSQLI_BOTH ] );
重复使用以获取下一条记录的数据
④以索引数组或关联数组的方式获取全部记录的数据
mixed mysqli_fetch_all ( mysqli_result $result [, int $resulttype = MYSQLI_NUM ] );
⑤返回结果集中的下一个字段信息
object mysqli_fetch_field ( mysqli_result $result );
⑥返回一个代表结果集字段的对象数组
array mysqli_fetch_fields ( mysqli_result $result );
⑦获取结果中行的数量
int mysqli_num_rows ( mysqli_result $result );
注意:如果使用MYSQLI_USE_RESULT模式则必须在获取完所有的结果才可使用该函数。
2>释放与一个结果集相关的内存
返回的结果集在数据量很大的时候需要很多的内存支持,所以在操作完结果集的时候有必要立刻释放与一个结果集相关的内
存, 释放之后,结果集就不可用了
void mysqli_free_result ( mysqli_result $result );
3)其他常用函数
1>获取前一个Mysql操作的受影响行数
int mysqli_affected_rows ( mysqli $link );
2>返回最后一次操作自动生成并使用的id
mixed mysqli_insert_id ( mysqli $link );
3>转义用于SQL语句中的特殊字符防止SQL语句出错
string mysqli_real_escape_string ( mysqli $link , string $escapestr );
<?php header('Content-type:text/html;charset=utf-8'); //与MySQL数据库建立连接 $link=mysqli_connect('localhost','root','','',3306); //连接错误时的提示 if(mysqli_connect_errno()){ exit(mysqli_connect_error()); } //设置默认字符编码 mysqli_set_charset($link, 'utf8'); //选择特定的数据库 mysqli_select_db($link,'d14'); //对数据库执行一条SQL语句,第三个参数决定了取具体结果的方式,MYSQLI_USE_RESULT,MYSQLI_STORE_RESULT(默认,常用) // $query='select * from t1'; // $result=mysqli_query($link, $query,MYSQLI_USE_RESULT); // var_dump(mysqli_fetch_row($result)); // var_dump(mysqli_fetch_row($result)); // var_dump(mysqli_num_rows($result)); //释放与一个结果集相关的内存 // mysqli_free_result($result); /* //如果使用MYSQLI_USE_RESULT模式则必须在获取完所有的结果才可使用该函数。 $query='select * from t1'; $result=mysqli_query($link, $query,MYSQLI_USE_RESULT); var_dump(mysqli_fetch_row($result)); var_dump(mysqli_fetch_row($result)); var_dump(mysqli_fetch_row($result)); var_dump(mysqli_fetch_row($result)); var_dump(mysqli_fetch_row($result)); var_dump(mysqli_num_rows($result)); //释放与一个结果集相关的内存 mysqli_free_result($result); */ /* //mysqli_real_query(),适用于只需要返回布尔值,判断有没有执行成功的需求 $query='select * from t1'; if(mysqli_real_query($link, $query)){ //获取结果集对象 $result=mysqli_store_result($link); var_dump(mysqli_fetch_row($result)); var_dump(mysqli_fetch_row($result)); var_dump(mysqli_fetch_row($result)); } */ /* //如果在执行SQL语句的时候发生错误,以上两个函数都将返回false,并且可以使用以下函数处理错误原因 $query='insert into t2(info) values("孙胜利")'; if(!mysqli_query($link,$query)){ //错误代号 var_dump(mysqli_errno($link)); //具体的错误原因 var_dump(mysqli_error($link)); } //你也可以这么写: if(mysqli_query($link,$query)){ //各种需要的操作.. }else{ //错误代号 var_dump(mysqli_errno($link)); //具体的错误原因 var_dump(mysqli_error($link)); } */ /* //获取前一个Mysql操作的受影响行数 $query='update t1 set info="私房库" where id=7'; if(mysqli_query($link,$query)){ var_dump(mysqli_affected_rows($link)); }else{ //错误代号 var_dump(mysqli_errno($link)); //具体的错误原因 var_dump(mysqli_error($link)); } */ /* //返回最后一次操作自动生成并使用的id $query='insert into t1(info) values("sifangku.com")'; if(mysqli_query($link,$query)){ var_dump(mysqli_insert_id($link)); }else{ //错误代号 var_dump(mysqli_errno($link)); //具体的错误原因 var_dump(mysqli_error($link)); } */ //转义用于SQL语句中的特殊字符防止SQL语句出错 //转义的主要目的是方式插入到数据库中的数据中包含某些特殊的字符,造成SQL语句出现语法错误,为了我们的数据能够顺利的入库 $str=<<<STRING dwqdqwdqwddwq''' "" ;;'dwq'd'wq'dwq'dwq": ::;;;'' '''' """"" ''''单位取得完全 STRING; $str=mysqli_real_escape_string($link, $str); $query="insert into t1(info) values('{$str}')"; if(mysqli_query($link,$query)){ var_dump(mysqli_insert_id($link)); }else{ //错误代号 var_dump(mysqli_errno($link)); //具体的错误原因 var_dump(mysqli_error($link)); } //关闭与mysql服务器的连接 mysqli_close($link);