PHP系列(十一)PHP操作mysql(i)数据库

                                     【Php操作Mysql数据库】

在PHP脚本中操作MySQL数据库的的六个步骤如下:

1.连接MySQL数据库服务器并判断是否连接正确

2.选择数据库

3.设置字符集

4.准备SQL语句并发送SQL语句到MySQL服务器并获取记录集

5.处理结果集

6.释放结果集资源,关闭数据库连接

一.PHP连接到MySQL

<?php

//我们全面采用UTF-8 编码。

header(‘Content-Type:text/html;charset=utf-8‘);

//连接MySQL

$conn = @mysql_connect(DB_HOST,DB_USER,DB_PASSWORD)or die(‘数据库连接失败!错误信息:‘.mysql_error());

//数据库连接参数,可以用常量存储,这样就不能修改,更加安全。

define(‘DB_USER‘,‘root‘);

define(‘DB_PASSWORD‘,‘yangfan‘);

define(‘DB_HOST‘,‘localhost‘);

define(‘DB_NAME‘ ,‘school‘);

//选择你所需要的数据库

@mysql_select_db(DB_NAME) or die(‘数据库找不到!错误信息:‘.mysql_error());

//设置字符集,如果是GBK,直接设置SET NAMES GBK 即可

@mysql_query(‘SET NAMES UTF8‘) or die(‘字符集设置错误‘);

//获取记录集

$query = "SELECT * FROM grade";

$result = @mysql_query($query) or die(‘SQL 语句有误!错误信息:‘.mysql_error());

//输出一条记录

print_r(mysql_fetch_array($result,MYSQL_ASSOC));

//释放结果集资源

mysql_free_result($result);

//关闭数据库

mysql_close($conn);

?>

二.增删改查

1、新增数据

<?php

$query = "INSERT INTO grade (name,email,point,regdate)VALUE (‘王五‘,‘[email protected]‘,,NOW())";

@mysql_query($query) or die(‘添加数据出错:‘.mysql_error());

?>

2、修改数据

<?php

$query = "UPDATE grade SET name=‘小可爱‘ WHERE id=6";

@mysql_query($query) or die(‘修改出错:‘.mysql_error());

?>

3、删除数据

<?php

$query = "DELETE FROM grade WHEREid=6";

@mysql_query($query) or die(‘删除错误:‘.mysql_error());

?>

4、显示数据

<?php

$query = "SELECT id,name,email,pointFROM grade";

$result = @mysql_query($query) or die(‘查询语句出错:‘.mysql_error());

while (!!$row = mysql_fetch_array($result)) {

echo$row[‘id‘].‘----‘.$row[‘name‘].‘----‘.$row[‘email‘].‘----‘.$row[‘point‘];

echo ‘<br />‘;

}

?>

三.其他常用函数

结果集取出来的函数:

mysql_fetch_assoc() 函数从结果集中取得一行作为关联数组。

mysql_fetch_row() 函数从结果集中取得一行作为索引数组。

mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有

mysql_num_rows()函数返回结果集中行的数目。

mysql_fetch_row():从结果集中取得一行作为枚举数组

mysql_fetch_array(): 从结果集中取得一行作为关联数组,或数字数组,或二者兼有

mysql_fetch_lengths (): 取得结果集中每个输出的长度

mysql_field_name(): 取得结果中指定字段的字段名

mysql_num_rows(): 取得结果集中行的数目

mysql_num_fields():取得结果集中字段的数目

mysql_get_client_info(): 取得MySQL 客户端信息

mysql_get_host_info(): 取得MySQL 主机信息

mysql_get_proto_info(): 取得MySQL 协议信息

mysql_get_server_info(): 取得MySQL 服务器信息

php连接 mysqli

PHP的mysqli扩展提供了其先行版本的所有功能,此外,由于MySQL已经是一个

具有完整特性的数据库服务器,这为PHP又添加了一些新特性。而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),其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚(rollback),该事务所有操作的影响都将取消。首先,您的MySQL是InnoDB或BDB引擎的一种,一般来说,你安装了AppServ的集成

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

里修改。

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

$_mysqli->autocommit(false);

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

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

$_sql .= "UPDATE tg_flower SETtg_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-11-08 18:44:00

PHP系列(十一)PHP操作mysql(i)数据库的相关文章

用JDBC操作MySQL——大量数据库操作时使用批处理提速

之前所有的操作由于数据量很小,所以没有进行批处理的优化,性能也没有出现明显的恶化,但是随着我用java处理数据量的大幅提高,频繁使用静态SQL语句的方法严重降低了处理效率,这里总结一下JDBC批处理的方法,来提高数据库的吞吐量. 首先,在SQL语句的形成上,我们可以使用StringBuilder合成SQL,也可以使用JDBC的set方法将参数带入. JDBC的批处理方法已知的有2大类:基于Statement对象的和PreparedStatement对象的 1. Statement对象的批处理  

python学习笔记十一:操作mysql

一.安装MySQL-python # yum install -y MySQL-python 二.打开数据库连接 #!/usr/bin/python import MySQLdb conn = MySQLdb.connect(user='root',passwd='admin',host='127.0.0.1') conn.select_db('test') cur = conn.cursor() 三.操作数据库 def insertdb(): sql = 'insert into test(n

php操作mysql(数据库常规操作)

php操作数据库八步走 <?php // 1.建立连接 $connection = mysqli_connect('127.0.0.1', 'root', '123456'); // 2.判断连接是否成功 if (mysqli_connect_error() != null) { die(mysqli_connect_error()); } else { echo "连接成功!"; } ///3.选择数据库 mysqli_select_db($connection, 'test'

PHP 操作 MySQL 执行数据库事务

<?php $mysqli=new mysqli();//实例化mysqli $mysqli->connect('localhost','root','admin','test'); if(mysqli_connect_error()){ exit('数据库连接错误,错误信息是.'.mysqli_connect_error()); } $mysqli->set_charset("UTF8");//设置数据库编码 //首先你必须关闭自动提交数据 $mysqli->

初码-Azure系列-记一次MySQL数据库向Azure的迁移

初码Azure系列文章目录 还在继续给客户迁移不同的系统到Azure,这一次是一个系统的MySQL数据库要迁移,将迁移过程记录一下 原系统环境 数据库版本:MySQL Community Edition 5.7 服务器环境:自建机房虚拟化环境,E7 4820 分配8核32G,主节点+非热备灾备节点 运维方式:每日夜间停止服务,ETL程序备份全库至灾备环境 数据规模:用户与业务表相关表,记录数据量在500万级别以内:日志表,记录数据量在5000万条以内,总数据存储量在50G Azure环境选择 考

Python+Django+SAE系列教程12-----配置MySQL数据库

因为SAE上支持的是Mysql,首先我们要在本地配置一个Mysql的环境 ,我在网上找到MySQL-python-1.2.4b4.win32-py2.7.exe,并双击 安装 选择典型安装 安装结束后,会弹出配置数据库的界面 : 然后输数据管理员密码: 最后是运行服务. 这个过程并不复杂,安装完成Mysql以后,系统会启动数据库服务,由于Mysql是用命令行控制的,想我这样懒的 人还是需要借助一个可视化 工具来管理,我选择MySQL-Front. 在网上找到MySQL_Front_Setup.1

python操作mysql数据库

连接数据库 输入值 存入数据库 关闭 import string import mysql.connector conn=mysql.connector.connect(user='root',password='test',database='dalian',use_unicode=True) cursor=conn.cursor() a=raw_input('enter an id: ') b=raw_input('enter a name: ') while(a!='quit' or b!

Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

这里的前提是windows上已经安装了MySQL数据库,且配置完毕,能正常建表能操作.在此基础上只需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了,只有1M多.这个有点类似jdbc里的那个jar包. 下载链接:http://sourceforge.net/projects/mysql-python/ , 百度云盘 :http://pan.baidu.com/s/1dDgnfpR 密码:7bna 接着import MySQLdb就能使用了,下面给出测试代码:

mac安装mysql及终端操作mysql与pycharm的数据库可视化

一.Mac安装mysql 首先下载mysql,地址:https://dev.mysql.com/downloads/mysql/ 然后已知安装就好了,会出现让你记住密码的提示,然后就安装好了.... 更改密码,可以参考:http://blog.csdn.net/soft2buy/article/details/50223373 二.终端操作mysql 首先在系统偏好里面找到mysql,如下图左一,然后点开,运行mysql,使其呈现running,如下图右一.     然后打开终端,输入mysql