Mysqli 操作数据库,mysqli操作数据库_PHP教程
Jul 12, 2016 am 08:50 AMMysqli 操作数据库,mysqli操作数据库
每次用到mysql_connect连接数据库的时候都会提示:
1 |
|
作为一个高要求高完美的男人,实在受不了这提示。躲着他也不行——解决他心里的小石头才能碎掉
那么就先学习下使用Mysqli操作数据库:
1. 与Mysql数据库交互时,首先要建立连接,最后要断开连接,这包括与服务器连接并选择一个数据库,以及最后关闭连接。与Mysql几乎所有的特性一样,这一点可以使用面向对象的方法来完成,也可以采用过程的方式完成。
1.1 创建一个Mysqli的对象
1 2 3 |
|
1.2 连接Mysql的主机、用户、密码、数据库
1 2 3 4 |
|
1.3 创建连接参数的Mysqli对象
1 2 3 4 |
|
1.4 更换默认连接的数据库
1 2 3 4 5 6 |
|
2 处理连接错误
2.1 如果无法连接Mysql数据库,那么这个页面不太可能继续完成预期的工作,因此,一定要注意监视连接错误并相应地做出反应。Mysqli拓展包含有很多特性可以用来抓取错误信息,例如:mysqli_connect_errno() 和 mysqli_connect_error()方法。
1 2 |
|
使用方法:
1 2 3 4 5 6 7 8 9 10 11 |
|
这里用了面向过程的方法来判断数据库是否连接成功。那么为什么不用面向对象的方法判断呢?我的理解是 判断数据库连接成功 之前首先要证明你要实例化的对象是否可用。。所以用了面向过程的方法来判断。(如果有不对的地方大家也可以一起讨论讨论,我自己也是个小学渣)
2.2 mysqli_error——返回数据库操作错误信息。mysqli_errno——返回数据库操作错误代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
输出:
数据库连接成功
错误信息是: Unknown system variable 'a'
错误代码是: 1193
3 与数据库进行交互。
① 绝大多数查询都与创建(Creation)、获取(Retrieval)、更新(Update)和删除(Deletion)任务有关,这些任务统称为CRUD。
② 获取数据网页程序大多数工作都是在获取和格式化所请求的数据。为此,要向数据库发送SELECT查询,再对结果进行迭代处理,将各行输出给浏览器,并按照自己的要求输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
输出:
Array ( [0] => 1 [1] => 秋田嘉 [2] => 123456 )
3.1 解析查询结果
一旦执行了查询并准备好结果集,下面就可以解析获取到的结果行了。你可以使用多个方法来获取各行中的字段,具体选择哪一个方法主要取决于个人喜好,因为只是引用字段的方法有所不同。
3.1.1 将结果集放到对象中由于你可能会使用mysqli的面向对象的语法,所以完全可以采用面向对象的方式管理结果集。
可以使用 fetch_object() 方法来完成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
输出:
秋田嘉
object(stdClass)#3 (3) { ["id"]=> string(1) "1" ["user"]=> string(9) "秋田嘉" ["psw"]=> string(6) "123456" }
刘德华
object(stdClass)#4 (3) { ["id"]=> string(1) "2" ["user"]=> string(9) "刘德华" ["psw"]=> string(6) "654321" }
3.1.2 使用索引数组和关联数组 fetch_array();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
输出:
秋田嘉
array(6) { [0]=> string(1) "1" ["id"]=> string(1) "1" [1]=> string(9) "秋田嘉" ["user"]=> string(9) "秋田嘉" [2]=> string(6) "123456" ["psw"]=> string(6) "123456" }
3.1.3 使用索引数组 fetch_row();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
输出:
123456
3.1.4 使用关联数组 fetch_assoc();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
输出:
123456
4 确定所选择的行和受影响的行
通常希望能够确定SELECT查询返回的行数,或者受INSERT、UPDATE或DELET查询影响的行数。
我们可以使用num_rows和affected_rows两个属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
输出:
2
2
5 移动指针的操作和获取字段
当你并不想从第一条数据开始获取,或者并不想从第一个字段获取,你可以使用数据指针移动或者字段指针移动的方式调整到恰当的位置。当然,你还可以获取字段的名称及其相关的属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
输出:
3
id
user
psw
5.1
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
|
5.2
1 2 |
|
6 执行多条SQL语句
有的时候,我们需要在一张页面上同时执行多条SQL语句,之前的方法就是分别创建多个结果集然后使用。但这样资源消耗很大,也不利于管理。 PHP提供了执行多条SQL语句的方法$mysqli->multi_query();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
7 执行数据库事务
事务(transaction)是作为整个一个单元的一组有序的数据库操作。如果一组中的所有操作都成功,则认为事务成功,即使只有一个失败操作,事务也不成功。如果所有操作成功完成,事务则提交(commit),其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚(roll back),该事务所有操作的影响都将取消。首先,您的MySQL是InnoDB或BDB引擎的一种,一般来说,你安装了AppServ的集成包,你选择InnoDB的引擎的数据库即可。如果你建立的表不是InnoDB,可以在phpmyadmin里修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion mysqli_connect()

Was soll ich tun, wenn PHP keine Verbindung zu MySQL herstellen kann?

PHP PDO vs. MySQL: Vergleich und Kontrast

Ausführliches Tutorial zum Herstellen einer Datenbankverbindung mit MySQLi in PHP

PHP-Warnung: mysqli_connect(): (HY000/2002): Lösung für Verbindung abgelehnt

Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Methode mysqli::prepare()

Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion mysqli_stmt_bind_param()
