php中常用的mysql操作函数
首先,放一段链接 https://www.php.net/manual/zh/function.mysql-connect,mysql_connect及其诸多函数已经自php5.5.0废弃,然后逐步移除中,使用 mysqli 或者 pdo_mysql中的函数来替代。
1.连接mysql服务器
mysqli_connect()
语法格式:mysqli_connect ( string hostname,string username, string password,string database,int port,string socket): mysqli | false
函数功能:如果成功链接mysql服务器,则返回一个与mysql服务器连接的标识 mysqli ,如果连接失败则返回 false。
在这里插入代码片
2.设置数据库字符集 和 发送sql
mysqli_query() 函数 可以用来设置数据库字符集。
语法格式:mysqli_query(mysqli $mysqli,string "set names 字符集");
(字符集是 gbk | utf8 )
函数功能:将mysql的字符集设置为指定的字符集。
tip:mysqli_query() 函数 完整的参数如下:mysqli_query(mysqli $mysql, string $query, int $result_mode = MYSQLI_STORE_RESULT): mysqli_result | bool
query 可以是设定字符集或者相应的sql语句(如:select sid from student | insert into xxx.... | update xxxx set.... | delete from .....
),如果执行的查询sql成功,则返回一个结果集 mysqli_result。
3.关闭mysql服务器连接
mysqli_close();
语法格式:bool mysqli_close(mysqli $mysqli )
函数功能:关闭mysql服务器连接
4.选择要操作的数据库
mysqli_select_db()
语法格式:bool mysqli_select_db( mysqli $mysqli , string database_name)
函数功能:设置当前想要操纵的数据库
5.结果集释放
mysqli_free_result()
语法格式:mysqli_free_result ( mysqli_result $result)
函数功能:释放结果集所占用的资源,执行成功返回true,失败返回false.
6.获取sql执行后影响的表记录行数
mysqli_affected_rows()
语法格式:mysqli_affected_rows(mysqli $mysql): int|string
函数功能:获取上一个 MySQL 操作中受影响的行数
mysql_insert_id()
语法格式:mysql_insert_id(resource $link_identifier = ?): int
函数功能:取得上一步 INSERT 操作产生的 ID
mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 link_identifier,则使用上一个打开的连接。
如果上一查询没有产生 AUTO_INCREMENT 的值,则 mysql_insert_id() 返回 0。如果需要保存该值以后使用,要确保在产生了值的查询之后立即调用 mysql_insert_id()。
7.遍历结果集中的数据
mysqli_fetch_row ( )
语法格式:mysql_fetch_row(resource $result): array
函数功能:返回根据所取得的行生成的数组,如果没有更多行则返回 false。
mysql_fetch_row() 从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。
依次调用 mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 false。
mysqli_fetch_array ()
语法格式:mysql_fetch_array(resource $result, int $result_type = ?): array
函数功能:从结果集中取得一行作为关联数组
参数:
resource 型的结果集。此结果集来自对 msql_query() 的调用。
result_type
接受以下常量值: MSQL_ASSOC,MSQL_NUM 和 MSQL_BOTH,默认为 MSQL_BOTH。如果用了 MYSQL_BOTH,将得到一个同时包含关联和数字索引的数组。用 MYSQL_ASSOC 只得到关联索引(如同 mysql_fetch_assoc() 那样),用 MYSQL_NUM 只得到数字索引(如同 mysql_fetch_row() 那样)。
小练习
书籍查询并且输出结果集数据
创建数据表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`id` int(0) NOT NULL AUTO_INCREMENT,
`bookName` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`bookPrice` decimal(10, 2) NOT NULL,
`author` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES (1, '平凡的世界', 59.00, '路遥');
INSERT INTO `book` VALUES (2, '三体', 99.00, '刘慈欣');
INSERT INTO `book` VALUES (3, '人间失格', 44.00, '太宰治');
INSERT INTO `book` VALUES (4, '白夜行', 38.00, '东野圭吾');
SET FOREIGN_KEY_CHECKS = 1;
创建testDB.php
用来连接数据库和执行sql,以及数据显示输出
<?php
// php 连接 mysql
// 1.resource mysql_connect (string hostname,string username,string password)
// 连接成功则返回一个连接标识,连接失败则返回一个 false
$hostname = "localhost"; // mysql服务器名
$username = "root"; // 账号
$password = "root"; // 密码
// 连接数据库
$conn = @mysqli_connect($hostname,$username,$password,) or die("连接数据库失败");
// 编写sql 通过sql指定要访问的数据库和表
$sql1 = "select * from phpdemo.book";
// 设定编码
mysqli_query($conn,"set names utf-8");
// 操纵数据库,查询一下信息
$rs = mysqli_query($conn,$sql1);
// 将结果集抽离出来,使用最常用的表格
echo "<table>";
echo "<tr><th>id</th><th>书名</th><th>价格</th><th>作者</th></tr>";
while ($row = mysqli_fetch_array($rs)){
echo "<tr>".
"<td>".$row['id']."</td>".
"<td>".$row['bookName']."</td>".
"<td>".$row['bookPrice']."</td>".
"<td>".$row['author']."</td>".
"</tr>";
}
echo "</table>";
// 释放结果集内存
mysqli_free_result($rs);
// 关闭数据库连接
mysqli_close($conn);
mysql连接模板
// php操纵mysql数据库的模板
class dataBase{
public $dbConn = null;
function getConnection()
{
$hostname = "localhost";
$username = "root";
$password = "root";
$database = "phpdemo";
global $dbConn;
if(mysqli_connect($hostname,$username,$password)){
$dbConn = mysqli_connect($hostname,$username,$password);
}else{
echo "数据库连接失败,请检查主机名,用户名,密码";
die(mysqli_error());
}
mysqli_query($dbConn,"set names utf-8");// 设定字符集编码
if(mysqli_select_db($dbConn,$database)){
echo "连接成功";
}else{
echo "连接失败,检查数据库名是否正常";
die(mysqli_error());
}
}
function closeConnection():void
{
global $dbConn;
if($dbConn){
mysqli_close($dbConn) or die (mysqli_error($dbConn));
}
}
}
tip:“这里对php中的类还没有详细的学过,所以模板还可能有不足的地方”