赞
踩
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 语句操作数据库了。在 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语句模板时,其语法是将数据部分使用“?”占位符代替。示例代码如下:
- 一.开启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";
- }
-
-
- ?>
(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 "连接成功";
- ?>
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)
④ 若是查询语句,记得释放查询结果集,避免资源浪费
⑤ 关闭数据库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。