当前位置:学者斋 >

计算机 >php语言 >

PHP操如何操作mysql详解

PHP操如何操作mysql详解

很多人听说了PHP可能还对它还不是很了解。以下是小编精心为大家整理的关于PHP操作mysql详解,希望对大家有所帮助!

PHP操如何操作mysql详解

  数据库基本操作

1)用户的 Web浏览器发出 HTTP请求,请求特定 Web页面。

2)Web服务器收到的请求获取该文件,并将它传到 PHP引擎,要求它处理。

3)PHP引擎开始解析脚本。脚本中有一条连接数据库的命令,还有执行一个查询的令。命PHP打开通向 MYSQL数据库的连接,发送适当的查询。

4)MYSQL服务器接收数据库查询并处理。将结果返回到 PHP引擎。

5)PHP以你去哪干完成脚本运行,通常,这包括将查询结果格式化成 HTML格式。然后再输出 HTML返回到 Web服务器。

6)Web服务器将 HTML发送到浏览器。

建立和断开连接

与 MySQL数据库交互时,首先要建立连接,最后要断开连接,这包括与服务器连接并选择一个数据库 ,以及最后关闭连接 。与 mysqli几乎所有的特性一样 ,这一点可以使用面向对象的方法来完成,也可以采用过程化的方式完成。

1.创建一个 mysqli的对象

$_mysqli = newmysqli;

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

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

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

$_mysqli = newmysqli( 'localhost' , 'root' , 'yangfan' , 'guest' );

4.单独选择数据库

$_mysqli->select_db( 'testguest' );

5.断开 MySQL

$_mysqli->close;

与数据库进行交互

绝大多数查询都与创建(Creation) 、获取 (Retrieval) 、更新 (Update)和删除 (Deletion)任务有关,这些任务统称为 CRUD 。

  1.获取数据

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

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

//设置一下编码 utf8

$_mysqli->set_charset( "utf8" );

//创建一句 SQL语句

$_sql = "SELECT* FROM t g_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 );

标签: PHP MySQL
  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/php/jv56pq.html