PHP MySQLi

PHP MySQLi(MySQL Improved!) 。使用 MySQLi 函数能够访问 MySQL 数据库服务器。

为了能够顺利使用 MySQLi 函数,您必须在编译 PHP 时添加对 MySQLi 扩展的支持。MySQLi 扩展是在 PHP 5.0.0 版本中引进的。MySQL Native Driver 包含在 PHP 5.3.0 版本。

PHP 5 MySQLi 函数

PHP 5 MySQLi 函数
函数说明
mysqli_affected_rows()返回前一次 MySQL 操作所影响的记录行数。
mysqli_autocommit()打开或关闭自动提交数据库修改。
mysqli_change_user()更改指定数据库连接的用户。
mysqli_character_set_name()返回数据库连接的默认字符集。
mysqli_close()关闭先前打开的数据库连接。
mysqli_commit()提交当前事务。
mysqli_connect_errno()返回上一次连接错误的错误代码。
mysqli_connect_error()返回上一次连接错误的错误描述。
mysqli_connect()打开一个到 MySQL 服务器的新的连接。
mysqli_data_seek()调整结果指针到结果集中的一个任意行。
mysqli_debug()执行调试操作。
mysqli_dump_debug_info()转储调试信息到日志中。
mysqli_errno()返回最近调用函数的最后一个错误代码。
mysqli_error_list()返回最近调用函数的错误列表。
mysqli_error()返回最近调用函数的最后一个错误描述。
mysqli_fetch_all()从结果集中取得所有行作为关联数组,或数字数组,或二者兼有。(fetch[fetʃ]取得,获取)
mysqli_fetch_array()从结果集中取得一行作为关联数组,或数字数组,或二者兼有。
mysqli_fetch_assoc()从结果集中取得一行作为关联数组。(associate[əˈsoʊsieɪt]关联)
mysqli_fetch_field_direct()从结果集中取得某个单一字段的 meta-data,并作为对象返回。
mysqli_query()执行某个针对数据库的查询。

mysqli_query()

mysqli_query() 函数执行某个针对数据库的查询。

					
/*
 * connection: 必需,规定要使用的 MySQL 连接。
 *      query: 必需,规定查询字符串。
 * resultmode: 可选,一个常量。MYSQLI_USE_RESULT(检索大量数据);MYSQLI_STORE_RESULT(默认)。
 *     return: 针对成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,将返回一个 mysqli_result 对象。针对其他成功的查询,将返回 TRUE。如果失败,则返回 FALSE。
 */
mysqli_query(connection, query, resultmode);
					
				

mysqli_connect()

建立一个与 MySQL 数据库服务器的链接。

					
/*
 *     host: 可选。要链接的数据库服务器的 主机名 或 IP 地址。
 * username: 可选。要链接的数据库服务器 MySQL 的用户名。
 * password: 可选。要链接的数据库服务器 MySQL 的密码。
 *   dbname: 可选。指定默认使用的数据库。
 *     port: 可选。指定尝试连接到 MySQL 服务器的端口号。
 *   socket: 可选。指定 socket 或要使用的已命名 pipe。
 *   return: 返回一个代表到指定数据库服务器 MySQL 的连接对象。
 */
mysqli_connect(host, username, password, dbname, port, socket);
					
				
					
<?php
  $conn = mysqli_connect("localhost", "wanghao", "123456", "my_db");
 ?>
					
				

mysqli_query()

mysqli_query() 函数执行某个针对数据库的查询。

					
/*
 * connection: 必需,规定要使用的 MySQL 连接。
 *      query: 必需,规定查询字符串。
 * resultmode: 可选,一个常量。可以是下列值中的任意一个:MYSQLI_USE_RESULT(检索大量数据);MYSQLI_STORE_RESULT(默认)。
 *     return: 针对成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,将返回一个 mysqli_result 对象。针对其他成功的查询,将返回 TRUE。如果失败,则返回 FALSE。
 */
mysqli_query(connection, query, resultmode);
					
				
					
<?php 
  $conn = mysqli_connect("localhost", "root", "hIs4R9ooW1QaFJKb", "my_db") or die("数据库服务器链接失败");
  $sql = "SELECT * FROM kehu WHERE username='wanghao' AND password='123456'";
  $result = mysqli_query($conn, $sql);
  var_dump($result);
 ?>
					
				

$result 结果对象的 num_rows 属性为查找到的记录数(行数)。1 行表示查找到 1 条记录,0 行表示查找到 0 条记录(账号或者密码错误)。

					
<?php 
  $conn = mysqli_connect("localhost", "root", "hIs4R9ooW1QaFJKb", "my_db") or die("数据库服务器链接失败");
  $sql = "SELECT * FROM kehu WHERE username='wanghao' AND password='123'";
  $result = mysqli_query($conn, $sql);
  var_dump($result);
 ?>
					
				

从结果集中取得

从结果集中取得
函数说明
mysqli_fetch_all()从 结果集 中取得 所有行 作为 关联数组/数字数组 返回。
mysqli_fetch_array()从 结果集 中取得 一行 作为 关联数组/数字数组 返回。
mysqli_fetch_assoc()从 结果集 中取得 一行 作为 关联数组 返回。
mysqli_fetch_row()从 结果集 中取得 一行 作为 枚举数组 返回。
>mysqli_fetch_object()从 结果集 中 取得 当前行 作为 对象 返回。
mysqli_fetch_field()从 结果集 中取得 下一字段 作为 对象 返回。
mysqli_fetch_fields()从 结果集 中取得 所有字段 作为 对象 返回。
mysqli_fetch_lengths()从 结果集 中取得 当前行的每个列的长度 返回。
mysqli_fetch_field_direct()从 结果集 中取得 某个单一字段的 meta-data 作为 对象 返回。

mysqli_fetch_all()

mysqli_fetch_all() 函数从 结果集 中取得 所有行 作为 关联数组/数字数组,或二者兼有。

					
/*
 *     result: 必需。规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符。
 * resulttype: 可选。规定应该产生哪种类型的数组。可以是以下值中的一个:
 *             MYSQLI_ASSOC(关联数组)
 *             MYSQLI_NUM(数字数组)
 *             MYSQLI_BOTH(二者兼有)
 *     return: 结果集标识符。
 */
mysqli_fetch_all(result, resulttype);
					
				

例表:

demo
id
int(4) NOT NULL AUTO_INCREMENT
username
varchar(20) NOT NULL
password
varchar(20) NOT NULL
age
int(4) NOT NULL
address
varchar(100) NULL DEFAULT NULL
1wanghao12345618NULL
2xiaoming12345619NULL
3lili12345620NULL

demo.php 文件:

					
<?php
  $conn = mysqli_connect("localhost", "root", "password", "db_name") or die("数据库连接失败" . mysqli_connect_error());
  $sql = "SELECT * FROM `demo`";
  $result = mysqli_query($conn, $sql) or die("获取记录失败" . mysqli_error($conn));
  $users = mysqli_fetch_all($result, MYSQLI_ASSOC);
  var_dump($users);
  mysqli_free_result($result);
  mysqli_close($conn);
 ?>
					
				

输出:

					
array (size=3)
  0 => 
    array (size=5)
      'id' => string '1' (length=1)
      'username' => string 'wanghao' (length=7)
      'password' => string '123456' (length=6)
      'age' => string '18' (length=2)
      'address' => null
  1 => 
    array (size=5)
      'id' => string '2' (length=1)
      'username' => string 'xiaoming' (length=8)
      'password' => string '123456' (length=6)
      'age' => string '19' (length=2)
      'address' => null
  2 => 
    array (size=5)
      'id' => string '3' (length=1)
      'username' => string 'zhangsan' (length=8)
      'password' => string '123456' (length=6)
      'age' => string '25' (length=2)
      'address' => null
					
				

说明:

fetch... 总是双数组嵌套的形式,行 组成外数组,列 组成内数组。选取一列也是这样。

					
...
$sql = "SELECT `username` FROM `demo`";
...
array (size=3)
  0 => 
    array (size=1)
      'username' => string 'wanghao' (length=7)
  1 => 
    array (size=1)
      'username' => string 'xiaoming' (length=8)
  2 => 
    array (size=1)
      'username' => string 'zhangsan' (length=8)
					
				

mysqli_fetch_array()

mysqli_fetch_array() 函数从 结果集 中取得 一行 作为 关联数组/数字数组,或二者兼有。

					
/*
 *     result: 必需。规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的 结果集标识符。
 * resulttype: 可选。规定应该产生哪种类型的数组。可以是以下值中的一个:
 *             MYSQLI_ASSOC(关联数组)
 *             MYSQLI_NUM(数字数组)
 *             MYSQLI_BOTH(二者兼有)
 *     return: 结果集标识符。
 */
mysqli_fetch_array(result,resulttype);
					
				

例表:

demo
id
int(4) NOT NULL AUTO_INCREMENT
username
varchar(20) NOT NULL
password
varchar(20) NOT NULL
age
int(4) NOT NULL
address
varchar(100) NULL DEFAULT NULL
1wanghao12345618NULL
2xiaoming12345619NULL
3lili12345620NULL

demo.php 文件:

					
<?php
  $conn = mysqli_connect("localhost", "root", "password", "db_name") or die("数据库连接失败" . mysqli_connect_error());
  $sql = "SELECT * FROM `demo`";
  $result = mysqli_query($conn, $sql) or die("获取记录失败" . mysqli_error($conn));

  $users = mysqli_fetch_array($result, MYSQLI_ASSOC);
  var_dump($users);

  $users = mysqli_fetch_array($result, MYSQLI_NUM);
  var_dump($users);

  $users = mysqli_fetch_array($result, MYSQLI_BOTH);
  var_dump($users); 

  mysqli_free_result($result);
  mysqli_close($conn);
 ?>
					
				

输出:

					
array (size=5)
  'id' => string '1' (length=1)
  'username' => string 'wanghao' (length=7)
  'password' => string '123456' (length=6)
  'age' => string '18' (length=2)
  'address' => null

array (size=5)
  0 => string '2' (length=1)
  1 => string 'xiaoming' (length=8)
  2 => string '123456' (length=6)
  3 => string '19' (length=2)
  4 => null
  
array (size=10)
  0 => string '3' (length=1)
  'id' => string '3' (length=1)
  1 => string 'zhangsan' (length=8)
  'username' => string 'zhangsan' (length=8)
  2 => string '123456' (length=6)
  'password' => string '123456' (length=6)
  3 => string '25' (length=2)
  'age' => string '25' (length=2)
  4 => null
  'address' => null
					
				

mysqli_fetch_assoc()

mysqli_fetch_row()

mysqli_fetch_object()

mysqli_fetch_field()

mysqli_fetch_fields()

mysqli_fetch_lengths()

mysqli_fetch_field_direct()

mysqli_fetch_assoc()

调用 mysqli_fetch_assoc() 函数从结果集中取得一行作为关联数组。该函数返回的字段名是区分大小写的。

					
/*
 * result: 必需。规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符。
 * return: 返回代表读取行的关联数组。如果结果集中没有更多的行则返回 NULL。
 */
mysqli_fetch_assoc(result);
					
				
					
<?php 
  $conn = mysqli_connect("localhost", "root", "hIs4R9ooW1QaFJKb", "my_db") or die("数据库服务器链接失败");
  $sql = "SELECT * FROM kehu WHERE username='wanghao' AND password='123456'";
  $result = mysqli_query($conn, $sql);
  $row = mysqli_fetch_assoc($result);
  var_dump($row);
 ?>
					
				

mysqli_fetch_object()

mysqli_fetch_object() 函数从结果集中取得当前行,并作为对象返回。

					
/*
 *    result: 必需。规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符。
 * classname: 可选。规定要实例化的类名称,设置属性并返回。
 *    params: 可选。规定一个传给 classname 对象构造器的参数数组。
 *    return: 返回带有所取得行的字符串属性的对象。如果在结果集中没有更多的行则返回 NULL。返回的字段名是区分大小写的。
 */
mysqli_fetch_object(result,classname,params);
					
				
					
<?php 
  $con=mysqli_connect("localhost","root","username","password"); 
  if (mysqli_connect_errno($con)) { 
    echo "连接 MySQL 失败: " . mysqli_connect_error(); 
  }   

  $sql="SELECT name,url FROM websites ORDER BY alexa";

  if ($result=mysqli_query($con,$sql)) {
    while ($obj=mysqli_fetch_object($result)) {
        printf("%s : %s",$obj->name,$obj->url);
        echo "
"; } // 释放结果集合 mysqli_free_result($result); } mysqli_close($con); ?>