mysqli操作数据库

一. 建立和断开连接

与MySQL数据库交互时,首先要建立连接,最后要断开连接,这包括与服务器连接并

选择一个数据库,以及最后关闭连接。与mysqli几乎所有的特性一样,这一点可以使用面向

对象的方法来完成,也可以采用过程化的方式完成。

1.创建一个mysqli的对象

$_mysqli = new mysqli();

2.连接MySQL的主机、用户、密码、数据库

$_mysqli->connect(‘localhost‘,‘root‘,‘yangfan‘,‘guest‘);

3.创建带连接参数的mysqli对象

$_mysqli = new mysqli(‘localhost‘,‘root‘,‘yangfan‘,‘guest‘);

4.单独选择数据库

$_mysqli->select_db(‘testguest‘);

5.断开MySQL

$_mysqli->close();

二. 处理连接错误

如果无法连接MySQL数据库,那么这个页面不太可能继续完成预期的工作。因此,一

定要注意监视连接错误并相应地做出反应。Mysqli扩展包含有很多特性可以用来捕获错误信

息,例如:mysqli_connect_errno()和mysqli_connect_error()方法。

mysqli_connect_errno()函数返回连接数据库返回的错误号。

Mysqli_connect_error()函数返回连接数据库返回的错误代码。

if (mysqli_connect_errno()) {

echo ‘数据库连接错误,错误信息:‘.mysqli_connect_error();

exit();

}

errno属性返回数据库操作时的错误号。

error属性返回数据库操作时的错误代码。

if ($_mysqli->errno) {

echo ‘数据库操作时发生错误,错误代码是:‘.$_mysqli->error;

}

三. 与数据库进行交互

绝大多数查询都与创建(Creation)、获取(Retrieval)、更新(Update)和删除(Deletion)任

务有关,这些任务统称为CRUD。

1.获取数据

网页程序大多数工作都是在获取和格式化所请求的数据。为此,要向数据库发送

SELECT查询,再对结果进行迭代处理,将各行输出给浏览器,并按照自己的要求输出。

//设置一下编码utf8

$_mysqli->set_charset("utf8");

//创建一句SQL语句

$_sql = "SELECT * FROM tg_user";

//执行sql语句把结果集赋给$_result

$_result = $_mysqli->query($_sql);

//将结果集的第一行输出

print_r($_result->fetch_row());

//释放查询内存(销毁)

$_result->free();

2.解析查询结果

一旦执行了查询并准备好结果集,下面就可以解析获取到的结果行了。你可以使用多个

方法来获取各行中的字段,具体选择哪一个方法主要取决于个人喜好,因为只是引用字段的

方法有所不同。

将结果集放到对象中

由于你可能会使用mysqli的面向对象的语法,所以完全可以采用面向对象的方式管理结

果集。可以使用fetch_object()方法来完成。

//将结果集包装成对象

$_row = $_reslut->fetch_object();

//输出对象中的一个字段(属性)

echo $_row->tg_username;

//遍历所有的用户名称

while (!!$_row = $_reslut->fetch_object()) {

echo $_row->tg_username.‘ <br /> ‘;

}

使用索引数组和关联数组

//将结果集包装成数组(索引+关联)

$_row = $_reslut->fetch_array();

//输出下标是3的字段(属性)

echo $_row[3];

//将结果集包装成索引数组

$_row = $_reslut->fetch_row();

echo $_row[3];

//将结果集包装成关联数组

$_row = $_reslut->fetch_assoc();

echo $_row[‘tg_username‘];

3.确定所选择的行和受影响的行

通常希望能够确定SELECT查询返回的行数,或者受INSERT、UPDATE或DELET查询

影响的行数。我们可以使用num_rows和affected_rows两个属性

//当使用查询时,想了解SELECT查询了多少行,可以使用num_rows。

echo $_reslut->num_rows;

//当使用查询时,想了解SELECT、INSERT、UPDATE、DELETE查询时影响的行

数,可以使用affected_rows;注意,它是$_mysqli下的属性

echo $_mysqli->affected_rows;

4.移动指针的操作和获取字段

当你并不想从第一条数据开始获取,或者并不想从第一个字段获取,你可以使用数据指

针移动或者字段指针移动的方式调整到恰当的位置。当然,你还可以获取字段的名称及其相

关的属性。

//计算有多少条字段

echo $_reslut->field_count;

//获取字段的名称

$_field = $_reslut->fetch_field();

echo $_field->name;

//遍历字段

while (!!$_field = $_reslut->fetch_field()) {

echo $_field->name.‘<br />‘;

}

//一次性取得字段数组

print_r($_reslut->fetch_fields());

//移动数据指针

$_reslut->data_seek(5);

//移动字段指针

$_reslut->field_seek(2);

5.执行多条SQL语句

有的时候,我们需要在一张页面上同时执行多条SQL语句,之前的方法就是分别创建多

个结果集然后使用。但这样资源消耗很大,也不利于管理。 PHP提供了执行多条SQL语句

的方法$_mysqli->multi_query();

//创建多条SQL语句

$_sql .= "SELECT * FROM tg_user;";

$_sql .= "SELECT * FROM tg_photo;";

$_sql .= "SELECT * FROM tg_article";

//开始执行多条SQL语句

if ($_mysqli->multi_query($_sql)) {

//开始获取第一条SQL语句的结果集

$_result = $_mysqli->store_result();

print_r($_result->fetch_array());

//将结果集指针移到下一个

$_mysqli->next_result();

$_result = $_mysqli->store_result();

print_r($_result->fetch_array());

$_mysqli->next_result();

$_result = $_mysqli->store_result();

print_r($_result->fetch_array());

} else {

echo ‘sql语句有误!‘;

}

6.执行数据库事务

事务(transaction)是作为整个一个单元的一组有序的数据库操作。如果一组中的所有操

作都成功,则认为事务成功,即使只有一个失败操作,事务也不成功。如果所有操作成功完

成,事务则提交(commit),其修改将作用于所有其他数据库进程。如果一个操作失败,则事

务将回滚(roll back),该事务所有操作的影响都将取消。

首先,您的MySQL是InnoDB或BDB引擎的一种,一般来说,你安装了AppServ的集成

包,你选择InnoDB的引擎的数据库即可。如果你建立的表不是InnoDB,可以在phpmyadmin

里修改。

//首先你必须关闭自动提交数据

$_mysqli->autocommit(false);

//创建一个SQL语句,必须同时运行成功,不能出现一个成功,一个失败

$_sql .= "UPDATE tg_friend SET tg_state=tg_state+5 WHERE tg_id=1;";

$_sql .= "UPDATE tg_flower SET tg_flower=tg_flower-5 WHERE tg_id=1;";

//执行两条SQL语句

if ($_mysqli->multi_query($_sql)) {

//获取第一条SQL一影响的行数

$_success = $_mysqli->affected_rows == 1 ? true : false;

//下移,第二条SQL

$_mysqli->next_result();

//获取第二条SQL影响的行数

$_success2 = $_mysqli->affected_rows == 1 ? true : false;

//判断是否都正常通过了,两个SQL

if ($_success && $_success2) {

$_mysqli->commit();

echo ‘完美提交!‘;

} else {

$_mysqli->rollback();

echo ‘程序出现异常!‘;

}

} else {

echo "SQL语句有误:".$_mysqli->errno.$_mysqli->error;

}

//最后还必须开启自动提交

$_mysqli->autocommit(true);

时间: 2024-10-11 08:14:06

mysqli操作数据库的相关文章

Mysqli 操作数据库

每次用到mysql_connect连接数据库的时候都会提示: 1 Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in E:\wamp\www\myquote\includes\mysql_connect.php on line 5 作为一个高要求高完美的男人,实在受不了这提示.躲着他也不行——解决

php 通过mysqli 操作数据库mysql

目录 php mysqli 操作数据库 连接数据库 通过mysqli 创建数据库 通过mysqi 创建数据表 通过mysqli向数据表中插入信息 通过mysqli 读取数据 where语句的应用 通过mysqli删除数据 php mysqli 操作数据库 连接数据库 在php5.3版本之后,想要连接数据库有两种方案,一种是通过mysqli,另外外一种是通过pdo.本文主要说的是如果通过mysqli面向对象的写法操作数据库. 在连接数据库之前,需要先通过变量存储好数据库的基本连接信息. $serv

在PHP中使用Mysqli操作数据库

PHP的 mysqli 扩展提供了其先行版本的所有功能,此外,由于 MySQL 已经是一个 具有完整特性的数据库服务器 , 这为PHP 又添加了一些新特性 . 而 mysqli 恰恰也支持了 这些新特性. 一. 建立和断开连接 与 MySQL数据库交互时,首先要建立连接,最后要断开连接,这包括与服务器连接并 选择一个数据库 , 以及最后关闭连接 .与 mysqli 几乎所有的特性一样 , 这一点可以使用面向 对象的方法来完成,也可以采用过程化的方式完成. 1. 创建一个 mysqli 的对象 $

使用Mysqli操作数据库

一.mysql与mysqli的概念相关: 1.mysql与mysqli都是php方面的函数集,与mysql数据库关联不大. 2. 在php5版本之前,一般是用php的mysql函数去驱动mysql数据库的,比如mysql_query()的函数,属于面向过程3.在php5版本 以后,增加了mysqli的函数功能,某种意义上讲,它是mysql系统函数的增强版,更稳定更高效更安全,与mysql_query()对应的有 mysqli_query(),属于面向对象,用对象的方式操作驱动mysql数据库 二

PHP MysqlI操作数据库(转)

1连接数据库. Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->//procedural style $mysqli =  mysqli_connect('host','username','password','database_name');//object oriented style (recommended) $mysqli = new

mysqli 操作数据库(转)

从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多.效率高.稳定 编译时参数: ./configure --with-mysql=/usr/bin/mysql_config \ #使用 Mysql ClientLibrary(libmysql)构建 --with-mysqli=mysqlnd \ #使用 Mysql Native Dirver 即mysqlnd --with-pdo-mysql=mysqlnd #使用 Mysql Native

MYSQLI - mysqli操作数据库

<?php //模型类 class Model { //数据库连接 private $_conn = NULL; //where语句 private $_where = NULL; //表名称 private $_tableName = NULL; //构造方法,接收表名称 public function __construct($tabName){ //给属性赋值 $this->_tableName = $tabName; //连接数据库 $this->_conn = mysqli_c

mysqli操作mysql数据库(面向对象风格)

//1.创建MySQLi对象 echo "<meta charset='utf-8'>"; $mysqli=new MySQLi("localhost","root","root","test"); if($mysqli->connect_error){ die("连接失败".$mysqli->connect_error); } //2.操作数据库(发送sql)

PHP基础(13)使用mysqli操作MySQL数据库

mysqli提供了两种接口操作数据库MySQL 面向过程 2.  面向对象 <?php /*面向过程*/ $mysqli = mysqli_connect("localhost", "root", "123456", "mydb"); if (mysqli_connect_errno($mysqli)) {     echo "Failed to connect to MySQL: " . mysql