php mysqli 操作数据库

连接数据库

在php5.3版本之后,想要连接数据库有两种方案,一种是通过mysqli,另外外一种是通过pdo。本文主要说的是如果通过mysqli面向对象的写法操作数据库。

在连接数据库之前,需要先通过变量存储好数据库的基本连接信息。

$servername = "localhost"; // 地址
$username = "root"; // 用户名
$password = ""; // 密码

然后可以将mysqli 实例化创建一个对象。并且将相关的参数传入。

$m = new mysqli($servername,$username,$password);

然后可以来判断一下是否出现了错误。

// 检测连接是否成功
if($conn->connect_error){
die("连接失败,错误:" . $conn->connect_error);
}

当然,连接之后需要将连接的数据库关闭。

$conn->close();

完整的demo如下:

<?php
// php 连接Mysql
// 通过mysqli // 采用面向对象的写法来完成数据库的连接
// 设置基础数据库信息 $servername = "localhost";
$username = "root";
$password = ""; // 创建连接
$conn = new mysqli($servername,$username,$password); // 检测连接是否成功
if($conn->connect_error){
die("连接失败,错误:" . $conn->connect_error);
} // 否则连接成功
echo "连接成功!";
// 连接之后,还需要将连接关闭
$conn->close();
?>

通过mysqli 创建数据库

通过mysqli创建数据库,首先我们需要保证数据库的成功连接。

$servername = "localhost";
$username = "root";
$password = ""; // 创建连接
$conn = new mysqli($servername,$username,$password);
if($conn->connect_error){
die("连接失败,错误:" . $conn->connect_error);
}

接下来通过变量保存好sql语句。

// 设置sql语句
$sql = "create database stu_01 default character set = 'utf8' ";

连接好数据库之后,我们需要发送sql语句并且检验是否数据库创建成功:

// 发送sql语句 并且验证是否创建成功
if($conn->query($sql) === TRUE){
echo "数据库创建成功.";
}else {
echo "数据库创建失败 ,错误信息为:" . $conn->error; // 如果失败输出错误信息
}

当然,最后不要忘记关闭数据库。

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

需要注意的是,如果你使用其他端口(默认为3306),为数据库参数添加空字符串,如: new mysqli("localhost", "username", "password", "", port)

完整demo如下:

<?php 

$servername = "localhost";
$username = "root";
$password = ""; // 创建连接
$conn = new mysqli($servername,$username,$password);
if($conn->connect_error){
die("连接失败,错误:" . $conn->connect_error);
} // 设置sql语句
$sql = "create database stu_01 default character set = 'utf8' "; // 发送sql语句 并且验证是否创建成功
if($conn->query($sql) === TRUE){
echo "数据库创建成功.";
}else {
echo "数据库创建失败 ,错误信息为:" . $conn->error; // 如果失败输出错误信息
} // 关闭数据库
$conn->close();
?>

通过mysqi 创建数据表

通过mysqli创建数据表首先我们先来完成基本的数据库连接操作,需要注意的是,因为我们是在数据库中创建一个数据表,所以

需要在额外的配置一下数据库的信息:

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_01"; // 要操作的数据库名
// 创建连接
$conn = new mysqli($servername,$username,$password,$dbname); // 第四个参数
if($conn->connect_error){
die("连接失败,错误:" . $conn->connect_error);
}

接下来需要设定好创建数据表的sql语句。

create table stu_info(
id int(6) unsigned auto_increment primary key,
firstname varchar(30) not null,
lastname varchar(30) not null,
email varchar(50),
reg_date timestamp
)

关于sql 的数据类型,可以访问 :https://www.runoob.com/sql/sql-datatypes.html。

上述sql的一些解释:

NOT NULL - 每一行都必须含有值(不能为空),null 值是不允许的。
DEFAULT value - 设置默认值
UNSIGNED - 使用无符号数值类型,0 及正数
AUTO INCREMENT - 设置 MySQL 字段的值在新增记录时每次自动增长 1
PRIMARY KEY - 设置数据表中每条记录的唯一标识。 通常列的 PRIMARY KEY 设置为 ID 数值,与 AUTO_INCREMENT 一起使用。

每个表都应该有一个主键(本列为 "id" 列),主键必须包含唯一的值。

为了执行sql,可以将上面的sql语句存储到一个变量当中:


// 使用sql 创建数据表
$sql = "create table stu_info(
id int(6) unsigned auto_increment primary key,
firstname varchar(30) not null,
lastname varchar(30) not null,
email varchar(50),
reg_date timestamp
)";

设置完了sql语句,可以直接通过query方法发送sql语句,并且判断是否执行成功。

if($conn->query($sql) === TRUE){
echo "数据表创建成功。";
}else {
echo "数据表创建失败,错误信息:" . $conn->error;
} // 关闭数据库连接
$conn->close();

完整的demo如下:

<?php 

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_01";
// 创建连接
$conn = new mysqli($servername,$username,$password,$dbname);
if($conn->connect_error){
die("连接失败,错误:" . $conn->connect_error);
} // 使用sql 创建数据表
$sql = "create table stu_info(
id int(6) UNSIGNED auto_increment primary key,
firstname varchar(30) not null,
lastname varchar(30) not null,
email varchar(50),
reg_date timestamp
)"; if($conn->query($sql) === TRUE){
echo "数据表创建成功。";
}else {
echo "数据表创建失败,错误信息:" . $conn->error;
} // 关闭数据库连接
$conn->close(); ?>

通过mysqli向数据表中插入信息

首先,连接数据库并且确定数据库连接无误。

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_01";
// 创建连接
$conn = new mysqli($servername,$username,$password,$dbname);
if($conn->connect_error){
die("连接失败,错误:" . $conn->connect_error);
}

接下来设置sql语句:

// 设置插入数据的sql语句
$sql = "insert into stu_info(firstname,lastname,email) values('张三','张小三','zhangsan@qq.com')";

将设置好的sql语句发送:

// 发送sql 语句
if($conn->query($sql) === TRUE){
echo "新记录添加成功!";
}else {
echo "新记录添加失败,错误信息:" . $conn->error;
} // 关闭连接
$conn->close();

完整的demo如下:

<?php
header("Content-type:text/html;Charset=utf-8"); $servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02";
// 创建连接
$conn = new mysqli($servername,$username,$password,$dbname);
if($conn->connect_error){
die("连接失败,错误:" . $conn->connect_error);
} // 设置插入数据的sql语句
$sql = "insert into stu_info(firstname,lastname,email) values('张三','张小三','zhangsan@qq.com')"; // 发送sql 语句
if($conn->query($sql) === TRUE){
echo "新记录添加成功!";
}else {
echo "新记录添加失败,错误信息:" . $conn->error;
} // 关闭连接
$conn->close();
?>

如果存储数据的时候出现乱码,那么可以使用下面的代码来解决:

mysqli_set_charset($conn,'utf8'); // 解决乱码问题

完整demo如下:

<?php

header("Content-type:text/html;Charset=utf8");

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02"; $conn = new mysqli($servername,$username,$password,$dbname); mysqli_set_charset($conn,'utf8'); // 解决乱码问题 if($conn->connect_error){ echo "连接失败,错误信息:" . $conn->connect_error;
} // 设置sql语句
$sql = "insert into stu_info(firstname,lastname,email) values('李四','李小思','lisi@qq.com')"; // 发送sql
if($conn->query($sql) === TRUE) {
echo "新纪录添加成功.";
}else {
echo "新纪录添加失败,错误信息:" . $conn->connect_error;
} // 关闭
$conn->close();

上面我们向数据表中插入了一条信息,下面我们来尝试一次性向数据库中插入多条信息:

完整demo如下:

<?php

// 数据库连接基本信息
header("Content-type:text/html;Charset=utf8"); $servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02"; $conn = new mysqli($servername,$username,$password,$dbname); mysqli_set_charset($conn,'utf8'); // 解决乱码问题
// 检查链接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 下面开始插入多条数据 $sql = "insert into stu_info(firstname,lastname,email) values('张三丰','张君宝','sanfeng@qq.com');";
// 使用.= 的形式进行sql语句连接
$sql .= "insert into stu_info(firstname,lastname,email) values('东方不败','东方拜拜','dongfang@qq.com');"; // 发送sql
if($conn->multi_query($sql) === TRUE) {
echo "数据添加成功!";
}else{
echo "数据添加失败,错误信息如下: " . $conn->connect_error;
} // 关闭
$conn->close();

在上面的代码中我们使用.=的形式进行sql语句拼接,从而实现一次性插入多条数据。

请注意,每个SQL语句必须用分号隔开。

在上面的代码中,我们将query方法换成了multi_query()方法,可以顺利的实现一次性插入多条数据。

通过mysqli 读取数据

上面我们通过mysqli插入了数据,下面我们再来学习如何将数据读取出来:

如果需要查询全部数据:

<?php

// 数据库连接基本信息
header("Content-type:text/html;Charset=utf8"); $servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02"; $conn = new mysqli($servername,$username,$password,$dbname); mysqli_set_charset($conn,'utf8'); // 解决乱码问题
// 检查链接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
} // 设置sql 语句,查询全部数据
$sql = "select * from stu_info"; // 发送sql语句,获得查询结果
$result = $conn->query($sql); // 如果查询的结果>0表示查询成功,那么就可以将数据输出
// 函数 num_rows() 判断返回的数据。 // 如果返回的是多条数据,函数 fetch_assoc() 将结合集放入到关联数组并循环输出。
if($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()){
echo "id" . $row['id'] . '- Name:' . $row['firstname'] . " " . $row['lastname'] . '<br>';
}
}else {
echo "暂无数据";
} // 关闭
$conn->close();

在上面的demo中,我们使用的sql语句如下:

select * from stu_info;

上面的语句可以帮助我们查询全部的数据,我们如果只是想要查询一部分的数据也可以更改一下:

select id ,firstname,lastname from stu_info;

where语句的应用

我们在查询数据的时候可以在原本的条件的基础之上加上where条件,让查找更加的精确,例如:

select * from stu_info where id > 3;

通过mysqli删除数据

下面我们来通过mysqli删除一下数据库的数据。

<?php

// 数据库连接基本信息
header("Content-type:text/html;Charset=utf8"); $servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02"; $conn = new mysqli($servername,$username,$password,$dbname); mysqli_set_charset($conn,'utf8'); // 解决乱码问题
// 检查链接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
} // 设置sql
$sql = "delete from stu_info where lastname = '李小思';"; // 发送sql
if($conn->query($sql) === TRUE) {
echo "删除成功";
}else {
echo "删除失败,错误信息为:" . $conn->connect_error;
} $conn->close();

删除数据时,一定要在delete from stu_info后面加where 条件,否则整个数据表都会被清空。

通过mysqli 更改数据

最后再来说一下如何通过mysqli 更改mysql当中的数据.

完整demo如下:

<?php

// 数据库连接基本信息
header("Content-type:text/html;Charset=utf8"); $servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02"; $conn = new mysqli($servername,$username,$password,$dbname); mysqli_set_charset($conn,'utf8'); // 解决乱码问题
// 检查链接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
} // 设置sql语句
$sql = "update stu_info set firstname='张小三' where id = 3"; // 发送sql语句
if($conn->query($sql) === TRUE) {
echo "修改成功";
}else {
echo "修改失败,错误信息:" . $conn->connect_error;
} // 关闭
$conn->close();

常用sql语句总结

在上面的代码中,我们尝试了通过mysqli对mysql数据进行的增删改查操作,其中较为核心的是,sql语句的使用。

下面我们来说一下常用的sql语句语法:

创建数据库

create database 数据库名 default character set = 'utf8';

创建数据表

create table 数据表名 (
-- 下面是表中的一些字段
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)

插入数据

insert into table_name (column1, column2, column3,...) values (value1, value2, value3,...)

读取数据

select  column_name(s) from table_name

如果传入一个*,则表示搜索所有的数据:

select * from table_name

也可以在后面加入指定条件

select * from table_name where 条件

修改

update table_name
set column1=value, column2=value2,...
where some_column=some_value

删除数据

delete from table_name
where some_column = some_value

php 通过mysqli 操作数据库mysql的更多相关文章

  1. 比Mysqli操作数据库更简便的方式 。PDO

    下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...

  2. 6-2 python 操作数据库mysql

    1.python操作MySQL的 查询(select操作) 步骤 import pymysql # 1.建立数据库连接 conn = pymysql.connect(host='118.24.3.40 ...

  3. yii2操作数据库 mysql 读写分离 主从复制

    转载地址:http://www.kuitao8.com/20150115/3471.shtml 开始使用数据库首先需要配置数据库连接组件,通过添加 db 组件到应用配置实现("基础的&quo ...

  4. 在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法

    先来操作函数部分,普遍的MySQL 函数方法,但随着PHP5的发展,有些函数使用的要求加重了,有些则将废弃不用,有些则参数必填... ================================= ...

  5. 在PHP中使用Mysqli操作数据库

    PHP的 mysqli 扩展提供了其先行版本的所有功能,此外,由于 MySQL 已经是一个 具有完整特性的数据库服务器 , 这为PHP 又添加了一些新特性 . 而 mysqli 恰恰也支持了 这些新特 ...

  6. mysqli操作数据库

    1 连接数据库:可以使用对象或函数来连接(我们这里主要用mysqli对象,附带着函数连接) //创建mysqli对象(也可以叫做资源句柄) $_mysqli = new mysqli(); //连接数 ...

  7. mysqli 操作数据库(转)

    从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多.效率高.稳定 编译时参数: ./configure --with-mysql=/usr/bin/ ...

  8. mysqli 操作数据库

    从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多.效率高.稳定 编译时参数: ./configure --with-mysql=/usr/bin/ ...

  9. PHP MysqlI操作数据库

    1连接数据库. //procedural style $mysqli = mysqli_connect('host','username','password','database_name'); / ...

随机推荐

  1. 网卡绑定(bonding)

    就是将多块网卡绑定同一IP地址对外提供服务,可以实现高 可用或者负载均衡.当然,直接给两块网卡设置同一IP地址 是不可能的.通过bonding,虚拟一块网卡对外提供连接, 物理网卡的被修改为相同的MA ...

  2. ionic使用CardIO实现扫描银行卡功能(只能扫描16位以下,并且是浮雕数字)

    在一些涉及支付功能的app,一般需要绑定银行卡,除了靠用户手动输入银行卡号,用手机扫描银行卡也是一种常用的手段,查阅了写资料,发现ionic有CardIO插件可以实现这个功能,就兴致冲冲去尝试,结果有 ...

  3. css实现单行、多行文本超出显示省略号

    前言:项目中我们经常遇到这种需求,需要对单行.多行文本超出显示为省略号.这篇文章主要总结了小编解决此问题的方法,有不足之处欢迎大家指正. 单行文本省略 .ellipsis-line { border: ...

  4. 02-SQLServer数据库附加后处于只读模式

    一.总结 附加数据库后,遇到只读,并且取消只读的时候报错操作系统错误,一般都是附加的时候,使用的是SQLServer用户登录附加的,只要使用windows用户登录数据库重新附加一下就ok了. 二.处理 ...

  5. ESP8266乐鑫版本的(支持云端升级 (Boot 模式)烧写方法,(V1.5.4官方介绍如下)(BOOT模式)

    硬件平台: nodeMCU devkit核心板,带ch340g,应该是仿造的,官方是cp2102驱动,安信可科技有连接https://wiki.ai-thinker.com/esp8266/board ...

  6. Linux系统安装xinetd服务

    只需安装xinetd包 安装包 #yum -y install xinetd 安装成功后即可 service xinetd start service xinetd stop service xine ...

  7. Python之signal模块的使用

    常用的信号值如下: 信号值 事件 处理方式 SIGHUP 终止进程 终端线路挂断 SIGINT 终止进程 中断进程 SIGQUIT "建立CORE文件终止进程,并且生成core文件" ...

  8. C#静态变量 总结

    在C#程序中,没有全局变量的概念,这意味着所有的成员变量只有该类的实例才能操作这些数据,这起到了“信息隐藏”的作用.但有些时候,这样做却不是个明智的选择. 假设我们要定义一个图书类,要求该类能保存图书 ...

  9. golang配置oci8所遇到问题解决

    新建文件夹 mingw 将 MinGW.zip 解压到mingw目录下,进入mingw\lib目录下 新建文件夹pkg-config 执行命令 go get github.com/wendal/go- ...

  10. Flutter 父子组件传值

    Flutter 父子组件传值 一父传子: 父中: void onButtonChange(val1,val2,val3){ print('============================子向父 ...