先来一发数据库集成环境,让我们操作数据库更方便,网上有很多,我用的是Mysql Workbench,网上有教程,可自行百度。
首先先建一个库吧,然后在建一个test表,表中有三个字段,一个id主键,一个username和一个passwd,然后插入两条数据,再选出来看一下,sql如下:
create database mynote;
create table test(
id bigint(20) unsigned not null auto_increment comment '主键',
username varchar(64) comment '用户名',
passwd varchar(64) comment '密码',
primary key(id)
)default charset=utf8 comment='测试表';
insert into test (username, passwd) values ('欣欣', 'xinxin');
insert into test (username, passwd) values ('玩命牛', 'wanmingniu');
select * from test;
这时候我们的数据库就搭好了,数据也有了,可以用php来取数据啦:
<?php
$host = "localhost";
$username = "root";
$password = "";
$dbname = "mynote";
// connect the db(database)
$conn = mysql_connect($host, $username, $password);
if (! $conn) {
die ( 'Could not connect: ' . mysql_error () );
}
// select db
mysql_select_db ( $dbname, $conn ) or die ( 'can not use ' . $dbname . ': ' . mysql_error () );
// set character set
mysql_query ( 'set names utf8', $conn ) or die ( 'can not set utf8: ' . mysql_error () );
// select data
$sql = "select * from test";
$res = mysql_query ( $sql, $conn ) or die ( 'query fail: ' . mysql_error () );
// put data to array
$arr = array ();
$i = 0;
while ( $row = mysql_fetch_assoc ( $res ) ) {
$arr [$i ++] = $row;
}
mysql_free_result ( $res );
mysql_close( $conn );
var_dump($arr);
?>
check the result
这是一个比较标准的php读取数据库的例子,我们把流程总结一下:1、先调用mysql_connect来连接数据库;2、然后mysql_select_db,选择数据库;3、mysql_query就是执行sql指令;4、mysql_fetch_assoc是从得到的$res中取出一行;5、mysql_free_result将$res资源释放;6、mysql_close关闭数据库连接。
在这个程序中,我们最终把数据封装成了一个数组。然后我们用var_dump就可以将数组打印出来,当然,最终我们的数据不是这样展现,但是我们经常用这种方式调试。还有就是die这个函数,顾名思义,它是使进程退出,如果执行了die函数,那么程序到此为止。
这里只是为大家介绍了查操作,其实增删改也都是用mysql_query来实现的。由于数据库操作十分频繁,所以我们可以专门封装一个类来进行数据库操作:
<?php
class SQLHelper {
private $conn;
private $username = "root";
private $password = "";
private $dbname = "mynote";
private $host = "localhost";
// 构造函数
public function __construct() {
$this->conn = mysql_connect ( $this->host, $this->username, $this->password );
if (! $this->conn) {
die ( 'Could not connect: ' . mysql_error () );
}
mysql_select_db ( $this->dbname, $this->conn ) or die ( 'can not use ' . $this->dbname . ': ' . mysql_error () );
mysql_query ( 'set names utf8', $this->conn ) or die ( 'can not set utf8: ' . mysql_error () );
}
// 析构函数,关闭数据库连接
public function __destruct() {
if (! empty ( $this->conn )) {
mysql_close ( $this->conn );
}
}
// 查询函数,传入一个sql查询语句,返回一个数组,不必考虑释放资源了
public function execute_dql_array($sql) {
$arr = array ();
$res = mysql_query ( $sql, $this->conn ) or die ( 'query fail: ' . mysql_error () );
$i = 0;
while ( $row = mysql_fetch_assoc ( $res ) ) {
$arr [$i ++] = $row;
}
mysql_free_result ( $res );
return $arr;
}
// 其他操作,传入一个sql查询语句,返回0表示失败,返回1表示成功,返回2表示没有行收到影响
public function execute_dqm($sql) {
$b = mysql_query ( $sql, $this->conn ) or die ( 'query fail: ' . mysql_error () );
if (! $b) {
return 0;
} else if (mysql_affected_rows ( $this->conn ) > 0) {
return 1;
} else {
return 2;
}
}
// 得到上次插入的记录id
public function getLastInsertedId() {
return mysql_insert_id ( $this->conn );
}
}
?>
当然这里涉及到一些面向对象的知识,不过很简单,__construct是构造函数,也就是创造类的时候,系统会去执行的函数,__destruct是析构函数,也就是销毁类的时候,系统会去执行的函数,用private修饰的函数或变量是私有的,外部不能访问,用public修饰的函数或变量是公有的,外部可以访问。
我们在外部就这样使用:
<?php
// 引入SQLHelper.class.php文件
require_once dirname ( __FILE__ ) . '/../../../common/SQLHelper.class.php';
// 创建SQLHelper类
$sqlHelper = new SQLHelper();
// 选出数据
$res = $sqlHelper->execute_dql_array("select * from test");
// 打印数据
var_dump($res);
?>
check the result
首先我们用require_once引入类文件,require_once可以保证只会引入一次文件;第二句就是创建类,这时候会去调用类的构造函数__construct,然后我们调用execute_dql_array获取数据,函数内部已经为我们封装好的实现,最后打印数据。
有了SQLHelper,我们操作数据库就简单很多了。
,不要超过100元哦!