一.PHP数据库的扩展分类
1.MySQL 扩展是针对 MySQL 4.1.3 或更早版本设计的,是 PHP 与 MySQL数据库交互的早期扩展。由于其不支持 MySQL 数据库服务器的新特性,且安全性差,在项目开发中不建议使用,可用 MySQLi 扩展代替。
2.MySQLi 扩展是 MySQL 扩展的增强版,它不仅包含了所有 MySQL 扩展的功能函数,还可以使用 MySQL 新版本中的高级特性。例如,多语句执行和事务的支持,预处理方式完全解决了 SQL 注入问题等。MySQLi 扩展只支持MySQL 数据库,如果不考虑其他数据库,该扩展是一个非常好的选择。
3.PDO 是 PHP Data Objects(数据对象)的简称,它提供了一个统一的 API接口,只要修改其中的 DSN (数据源),就可以实现PHP应用与不同类型数据库服务器之间的交互。
二.连接数据库。
1.通过MySQL类库操作数据库的步骤
建立到MySQL的连接-打开指定的数据库-设置默认客户端的字符集-执行SQL查询-释放字符集-关闭连接
三.执行SQL语句。
在完成数据库的连接后,就可以通过 SQL 语句操作数据库了。在 MySQLi扩展中,通常使用 mysqli_query() 函数发送 SQL 语句,获取执行结果。函数的声明方式如下:
$conn表示通过 mysqli_connect() 函数获取的数据库连接, $sql 表示 SQL 语句。当函数执行 SELECT、SHOW、DESCRIBE 或EXPLAIN 查询时,返回值是查询结果集,而对于其他查询,成功返回 true,失败返回 false。
使用 mysql_query()函数执行 SQL语句,对数据的操作方式主要包括 5种方式
查询数据:使用select 语句实现数据的查询功能。
显示数据:使用select 语句显示数据的查询结果。
插入数据:使用insert into 语句向数据库中插入数据。
更新数据:使用update 语句更新数据库中的记录。
删除数据:使用 delete语句删除数据库中的记录!
四.处理结果集
1.当通过 mysqli_query() 函数执行 SQL 语句后,返回的结果集并不能直接使用,需要使用函数从结果集中获取信息,保存为数组。MySQLi 扩展中常用的处理结果集的函数如表所示。
2.在表列举函数中,mysqli_fetch_all() 和 mysqli_fetch_array() 的返回值支持关联数组和索引数组两种形式,函数第 1 个参数表示结果集,第 2 个参数是可选参数,表示返回的数组形式,其值有 MYSQLI_ASSOC、MYSQLI_NUM、MYSQLI_BOTH 三种常量,分别表示关联数组、索引数组,或两者皆有,默认值为 MYSQLI_BOTH。
3.当需要一次查询出所有的记录时,可以通过 mysqli_fetch_all() 函数来实现
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
再通过var_dump($data);打印出来。
五.预处理语句。
1.什么是预处理。
MySQLi 扩展中有一种预处理语句的机制,其原理是预先编译 SQL 语句的模板,当执行时只传输有变化的数据。下图演示了预处理语句和传统方式的区别。
图中可以看出,当 PHP 需要执行 SQL 时,传统方式是将发送的数据和 SQL 写在一起,这种方式每条 SQL 都需要经过分析、编译和优化的周期;而预处理语句只需要编译一次用户提交的 SQL 模板,在操作时,发送相关数据即可完成更新操作,这极大地提高了运行效率,而且无需考虑数据中包含特殊字符(如单引号)导致的语法问题。
2.预处理相关函数。
a. mysqi_prepare()函数用于预处理一个待执行的 SQL 语句,函数声明如下:mysqli_stmt mysqli_prepare ( mysqli $link , string $query )参数 $link 表示数据库连接,$query 表示 SQL 语句模板。当函数执行后,成功返回预处理对象,失败返回 false。
b. 在编写SQL语句模板时,其语法是将数据部分使用“?”占位符代替。示例代码如下:
PHP操作mysql数据库总结
一.开启Mysql数据库
1)php可以通过MySql函数库来操作数据库
开启mysql扩展
编辑Php配置文件php.ini
extension_dir="php/ext文件路径"
启动extension=mysqli选项 在php.ini文件内;
二.PHP操作Mysql数据库的步骤:
1.连接mysql数据库服务器
2.判断是否连接正确
3.选择数据库
4.设置字符集编码
5.准备并执行SQL语句
6.处理结果集
7.释放结果集资源,关闭数据库
三.具体操作mysql数据库
先要写头部header()汉字编码
如果数据库中有时间输出的话还要写时区类型
1.连接数据库
$conn=mysqli_connect(连接数据库的ip:3306,mysql数据库的账号,mysql数据库的密码)
2.判断是否连接成功
返回错误号
int mysql_errno([$link]); 中括号中的内容可以省略
如果为发生任何错误,此函数会返回0
返回错误信息
string mysqli_connect_error();
排查mysql数据库的错误信息可以用or die(...错误号.mysql_errno(),错误信息.mysqli_connect_error())来进行连接;
3.选择数据库
bool mysql_select_db('数据库的名字',[$link])
4.设置客户端汉字编码
bool mysql_set_charset('utf8',[$link])
5.执行SQL语句
mixed mysql_query(select(查看表内容)\show(tables查看数据库\
create tabel查看建表)\desc(查看表结构)\insert(添加记录)\
update(更新)\dalete(删除))
四.处理资源结果集
1.获取结果集包含的记录数目
int mysql_num_rows($表里记录信息变量)
2.获取表里的内容以索引数组返回值
array mysql_fetch_row($表里的记录信息变量)
3.获取表里的内容以关联数组返回值
array mysql_fetch_assoc($表里的记录信息变量)
4.获取结果集中字段的数目
int mysql_num_fieds($result)
5.返回结果集中某行记录的某个字段值(默认为首字段)
mysql_result($result, int $row)
int值是从0开始的0 拿某个字段的值
$row写字段名
五.处理非查询语句
1.获取插入时受影响行的行数
int mysql_affected_rows()
2.获取插入时最后插入记录的主键id
int mysql_insert_id()
六.释放结果集资源
1.如果是执行的事查询SQL语句查询后必须要释放资源
bool mysql_free_result();
2.使用完数据库后要关闭数据库
bool mysql_close();
<?php
$username=$_POST['usernm'];
$password=$_POST['passwd']; #接收来自login.php传递的passwd值赋值到$password上
$conn=mysqli_connect("localhost","root","root","login"); #建立与数据库的连接
if (!$conn)
{
die("连接错误:". mysqli_connect_error());
} #判断和数据库是否连接正确
$sql="select * from laptop where user='$username' and password='$password'";
$res=mysqli_query($conn,$sql); #连接,执行sql语句
if (mysqli_fetch_array($res)!=0) #将传参转化为数组,判断用户输入的值是否和数据库指定的字段中的值是否相同,相同即不为0,不相同反之。
{
echo "OK"; #可以改成页面链接 如:"header("location:query.html");"
}
else
{
echo "NO";
}
?>
PHP操作数据库
(1) 连接数据库
<?php
$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = 'dbali';
$conn = new mysqli($servername, $username, $password, $dbname); // 创建连接
// 检测连接
if ($conn->connect_error)
{
die("连接失败: " . $conn->connect_error);
}
$conn->set_charset('utf8'); //查询前设置编码,防止输出乱码
echo "连接成功";
?>
PHP连接数据库MYSQL的八个步骤
1.链接MySQL数据库 mysqli_connect();
2.判断链接是否成功
3.设置字符集 mysqli_set_charset
4.选择数据库 mysqli_select_db
5.准备SQL语句 select update insert delete
6.执行SQL语句
在选择数据库中使用 mysql_query()函数执行 SQL语句,对数据的操作方式主要包括 5种方式
查询数据:使用select 语句实现数据的查询功能。
显示数据:使用select 语句显示数据的查询结果。
插入数据:使用insert into 语句向数据库中插入数据。
更新数据:使用update 语句更新数据库中的记录。
删除数据:使用 delete语句删除数据库中的记录!
7.处理结果集
8.关闭数据库释放资源
<?php
$conn = mysqli_connect('localhost','root','root');
if (!$conn)
{
die("连接失败: " . $conn->connect_error);
//exit('数据库连接失败');
}
mysqli_set_charset($conn,'utf8');
mysqli_select_db($conn,'count');
$sql = "select * from count";
$obj = mysqli_query($conn,$sql);
$res = mysqli_fetch_array($obj);
var_dump($res);
mysqli_close($conn);
?>
(2) 书写语句,执行语句
① 执行语句的代码:$res = $conn->query()
② 若执行的是增删改语句,$res的值为布尔值(insert, update, delete)
③ 若执行的是查询语句,得到查询结果集(对象)(select)
④ 若是查询语句,记得释放查询结果集,避免资源浪费
⑤ 关闭数据库