当前位置: 首页 > php>阅读正文

php使用mysqli操作数据库、数据表、对数据增删改查

2021.9.8 朱丰华 1279 次 留下评论 2734字

PHP 5.3 及以上版本可以使用 Mysqli 或 PDO 两种方式操作数据库。

PDO能操作多种数据库,是一种通用操作数据库方法。Mysqli 只能操作 MySQL,但它更简单,如果只使用Mysql,使用Mysqli扩展也是一个不错的选择。

定义一些变量,存储mysql连接的信息

$db_ip = "127.0.0.1";
$db_port = 3306;
$db_server = $db_ip.':'.$db_port;  // 拼接ip和端口
$db_user = "root";
$db_pwd = "123456";

连接数据库

在进行所有关于sql操作前,必须先连接到数据库

连接到数据库后,你将得到一个连接对象,后续将使用该对象操作数据库

// 创建连接,得到连接对象
$conn = new mysqli($db_server, $db_user, $db_pwd);

// 检测连接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

DDL语句

DDL语句,表示操作数据库和操作数据表

创建数据库

创建数据库时,至少指定数据库名,通常也应该设置编码

// 设置变量
$create_db_name = "test3";
$create_db_enc = "utf8";
$sql_create_db = "create database $create_db_name character set $create_db_enc";
// 执行创建
$result = $conn->query($sql_create_db);
// 输出结果
echo "<br>";
var_dump($result);  // true or false

创建数据表

创建数据表时,应该选定一个数据库,也就是使用use database语句。

连接对象,在对表进行操作前,务必选定一个数据库,后续默认操作该数据库

// 选定数据库
$db_use = "test3";
$sql_select_db = "use $db_use";
$conn->query($sql_select_db);
// 创建表
$sql_create_tb = " create table student(
      name varchar(10),
      age int(10)
     );";
$result = $conn->query($sql_create_tb);
echo "<br>";
var_dump($result);  // true or false

可以使用 select_db(数据库名)方法快速选择数据库

DML语句

DML表示对数据的,增删改

插入数据

// 增加数据
$sql_insert = "insert into student(name,age) values('张三',18)";

$result = $conn->query($sql_insert);
echo "<br>";
var_dump($result);  // true or false

插入多条数据

使用multi_query()方法一次执行多条语句

// 增加多条数据
$sql_insert = "insert into student(name,age) values('张三',18);";
$sql_insert .= "insert into student(name,age) values('李四',18);";

$result = $conn->multi_query($sql_insert);
echo "<br>";
var_dump($result);  // true or false

删除数据

// 删除数据
$sql_delete = "delete from student where name = '李四'";

if($conn->query($sql_delete) === TRUE) {
    echo "删除成功";
}else {
    echo "删除失败,错误信息为:" . $conn->connect_error;
}

修改数据

// 更新数据
$sql_update = "update student set age=12  where name='张三'";

$result = $conn->query($sql_update);
echo "<br>";
var_dump($result);  // true仅表示语句执行成功

DQL语句

DQL表示查询语句,查询语句较为复杂

查询语句语法

select
    字段列表
from
    表名列表
where
    条件列表
group by
    分组字段
having
    分组之后的条件
order by
    排序
limit
    分页限定

简单查询

查询表中所有数据

// 查询语句
$sql_select = "select * from student";

$result = $conn->query($sql_select);
if ($result->num_rows > 0) {
    // 输出每行数据
    while($row = $result->fetch_assoc()) {
        echo "name: ". $row["name"]. " - age: ". $row["age"]. " " . "<br>";
    }
} else {
    echo "查询完毕";
}

SQLI对象

在上述语句中,我们可以得出几点结论

  • new mysqli_connect()就会自动连接并得到连接对象,后续使用该连接对象操作数据库
  • select_db(name)可以快速选定数据库
  • query(sql)方法能执行一条sql
  • multi_query(sql)能执行包含多条sql的语句
  • sql语句返回值,与执行的sql有关,不同语句返回值不同

预处理语句

为了防止sql注入,提供了预处理语句,例如插入数据

// 预执行增加数据
$sql_insert_pre = "insert into student(name,age) values(?,?)";

$stmt = $conn->prepare($sql_insert_pre);

// 必须使用变量
$name = "abc";
$age = 18;
$stmt->bind_param("ss", $name, $age);
$result = $stmt->execute();

$name = "aaa";
$age = 333;
$stmt->bind_param("ss", $name, $age);
$result = $stmt->execute();

echo "<br>";
var_dump($result);  // true or false

bind_param参数有以下四种类型:

  • i – integer(整型)
  • d – double(双精度浮点型)
  • s – string(字符串)
  • b – BLOB(布尔值)

关闭资源

执行sql后,会自动关闭连接,也可以手动关闭

$conn->close();

查询数据后,可以清空缓存

$reslt->free();

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注