PHP中mysqli使用

mysqli面向对象方法的使用
构造方法

mysqli([string host [, string username [, string pswd [, string dbname [, int port, [string socket]]]]]])

1.连接数据库
a.

$mysqli = new mysqli('localhost','root','root','test');

b.

$mysqli = new mysqli();
$mysqli->connect('localhost','root','root','test');

c.

$mysqli = new mysqli('localhost','root','root');
$mysqli->select_db('test');

2.连接错误
mysqli_connect_errno() 返回一个整数,标识连接数据库是否成功和各种错误的数值。
mysqli_connect_error() 返回连接错误信息。

$conn = new mysqli('localhost', 'root', 'root', 'test', '3306');
if(mysqli_connect_errno()){
    exit('Connect failed:' . mysqli_connect_error());
}
$conn->set_charset("utf8");

exit() 函数输出一条消息,并退出当前脚本。
该函数是 die() 函数的别名。

3.查询

$mysqli = new mysqli();
$mysqli->connect('localhost','root','root','Test','3306');

$query = 'SELECT sku,name,price FROM products ORDER by name';
$result = $mysqli->query($query,MYSQLI_STORE_RESULT);
//while(list($sku,$name,$price) = $result->fetch_row()){
//    printf("(%s) %s: \$%s<br />",$sku,$name,$price);
//}

//while($row = $result->fetch_object()){
//    printf("(%s) %s: \$%s<br />",$row->sku,$row->name,$row->price);
//}

while($row = $result->fetch_array()){
    printf("(%s) %s: \$%s<br />",$row[0],$row[1],$row[2]);
}

4.释放
有时可能获取一个特别庞大的结果集,此时一旦完成处理,很有必要释放该结果所请求的内存。

$result->free();

关闭数据库
$mysqli->close();

5.确定所选择的行和受影响的行
a.确定返回的行数

$query = 'SELECT....';
$result = $mysqli->query($query);
printf("%d",$result->num_rows);

b.确定受影响的函数

$query = 'INSERT/UPDATE/DELETE....';
$result = $mysqli->query($query);
printf("%d",$result->affected_rows);

5.mysqli_result::fetch_array
默认为MYSQLI_BOTH,既可以以索引读取也可以通过字段名读取

mixed mysqli_result::fetch_array ([ int $resulttype = MYSQLI_BOTH ] )

MYSQL_ASSOC
对应字段

while($row = $result->fetch_array(MYSQLI_ASSOC)){
    printf("(%s) %s: \$%s<br />",$row['sku'],$row['name'],$row['price']);
}

MYSQL_NUM
对应索引下标

while($row = $result->fetch_array(MYSQLI_NUM)){
    printf("(%s) %s: \$%s<br />",$row[0],$row[1],$row[2]);
}
### 使用 PHP 的 `mysqli` 扩展连接并操作 MySQL 数据库 #### 连接至 MySQL 数据库 为了建立到 MySQL 数据库的连接,可以采用过程化风格或面向对象的方式调用 `mysqli_connect()` 函数。此函数接收主机名、用户名、密码以及要使用的数据库作为参数[^1]。 ```php // 过程化风格 $link = mysqli_connect("localhost", "my_user", "my_password", "world"); if (!$link) { echo "Error: Unable to connect to MySQL." . PHP_EOL; echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; exit; } echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL; // 关闭连接 mysqli_close($link); ``` 对于面向对象的方法: ```php // 面向对象风格 $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* 检查连接 */ if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } printf("Connection established successfully.\n"); $mysqli->close(); ``` #### 获取查询结果集 一旦建立了有效的数据库连接,就可以执行 SQL 查询来检索数据。`mysqli` 提供了几种不同的方法用于处理返回的结果集,其中最常用的是 `fetch_row`, `fetch_assoc`, `fetch_array` 和 `fetch_object` 方法[^2]。 - **`fetch_row`**: 返回一个数值索引数组表示当前行的数据。 - **`fetch_assoc`**: 返回关联数组形式的一行记录。 - **`fetch_array`**: 同时提供上述两者功能,默认情况下会同时包含数字和字符串键。 - **`fetch_object`**: 将每一列映射成对象属性的形式返回单条记录。 推荐优先考虑使用前两种方式 (`fetch_row` 或者 `fetch_assoc`) 来简化开发流程并提高性能效率。 下面是一个简单的例子展示如何通过 `mysqli` 发送 SELECT 请求并读取响应中的所有行: ```php $query = "SELECT id, name FROM users"; $result = $mysqli->query($query); while ($row = $result->fetch_assoc()) { // 可选 fetch_row() printf("%d : %s \n", $row['id'], htmlspecialchars($row['name'])); } $result->free(); // 释放资源 ``` #### 创建新数据库 当需要新建一个数据库实例时,在 SQL 命令里加入 IF NOT EXISTS 子句能够防止重复创建同名数据库引发异常情况的发生[^3]: ```sql CREATE DATABASE IF NOT EXISTS testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 这段代码确保只有在目标数据库不存在的情况下才会被创建出来,并指定了字符编码为 UTF-8 支持多语言文字存储需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值