PHP中使用mysqli与MySQL交互

 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 );
4)一次性执行多条SQL语句,多个SQL语句用分号隔开
bool mysqli_multi_query ( mysqli $link , string $query );
3.预处理语句机制
   1)准备一个用于执行的SQL语句
        mysqli_stmt mysqli_prepare ( mysqli $link , string $query );
   2)将变量作为参数绑定到prepared语句上
        bool mysqli_stmt_bind_param ( mysqli_stmt $stmt , string $types , mixed &$var1 [, mixed &$... ] );
        参数string $types说明:表示后面多个可选参数变量的数据类型,一一对应.
                i:int类型
                d:double或者float类型
                s:字符串类型
                b:二进制数据类型(BLOB、二进制字符串)
   3)执行一个prepared准本好的语句
        bool mysqli_stmt_execute ( mysqli_stmt $stmt );
上述三步骤举例
$query='insert into t1(id,info,content,filed1) values(?,?,?,?)';
//准备要执行的SQL语句
$stmt=mysqli_prepare($link, $query);
 
//为?绑定变量
mysqli_stmt_bind_param($stmt,'issd',$val1,$val2,$val3,$val4);
 
$val1=1;
$val2='第五代青蛙';
$val3='的武器大全我带我去';
$val4=60.5;
//执行准备好的SQL语句
var_dump(mysqli_stmt_execute($stmt));
 
如果是select之类的语句需要具体的结果;
4)将查询出的数据绑定到PHP变量上
bool mysqli_stmt_bind_result ( mysqli_stmt $stmt , mixed &$var1 [, mixed &$... ] );
5)从一个prepared语句中抓取结果到指定变量中
bool mysqli_stmt_fetch ( mysqli_stmt $stmt );
6)从一个prepared语句返回结果集元数据,配合相关函数,可以用来获得字段的相关信息
        mysqli_result mysqli_stmt_result_metadata ( mysqli_stmt $stmt );
        ①mysqli_fetch_field();
        ②mysqli_fetch_fields();
7)取回一个结果集
        bool mysqli_stmt_store_result ( mysqli_stmt $stmt );
        取回之后可以使用int mysqli_stmt_num_rows ( mysqli_stmt $stmt );返回语句结果集中的行数
    8)释放给定语句处理存储的结果集所占内存
        void mysqli_stmt_free_result ( mysqli_stmt $stmt );
    9)关闭一个prepared语句
        bool mysqli_stmt_close ( mysqli_stmt $stmt );
 
 
 

扫一扫手机访问