PHP操作数据库

连接数据库

1
2
3
4
$link=@mysql_connect('localhost:3306','root','aaa') or die(mysql_error());	//连接数据库
mysql_query('set names utf8'); //设置字符编码
//mysql_query('use jokedb'); //选择数据库
mysql_select_db('jokedb'); //选择数据库

显示数据库函数

mysql_fetch_row()

获取资源中的一条记录,并匹配成索引数组,指针下移一条。如果匹配不到返回false

mysql_fetch_assoc()

mysql_fetch_row()
获取资源中的一条记录,并匹配成索引数组,指针下移一条。如果匹配不到返回false

mysql_fetch_array()

获取资源中的一条记录,并匹配成关联数组和索引,指针下移一条。匹配不到返回false

数据的个数是记录的两倍,一般不使用

mysql_fetch_object()

获取资源中的一条记录,并匹配成对象,指针下移一条。匹配不到返回false

1
2
$rows = mysql_fetch_object($rs);
echo $rows->ID,'<br>'.$rows->Title;

分页原理

总页码:$pagecount=ceil($recordcount/$pagesize)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$titleid=isset($_GET['titleid'])?$_GET['titleid']:1; //笑话类别
$pagesize=10; //声明一页放10条记录
//第一步:求总记录数
$sql="select count(*) from contents where title=$titleid";
$rs=mysql_query($sql);
$rows=mysql_fetch_row($rs);
$recordcount=$rows[0]; //总记录数
//第二步:求总页数
$pagecount=ceil($recordcount/$pagesize); //总页数
//第四步:获取当前页码
$pageno=isset($_GET['pageno'])?$_GET['pageno']:1;
if($pageno<1)
$pageno=1;
if($pageno>$pagecount)
$pageno=$pagecount;
//第五步:计算起始位置
$startno=($pageno-1)*$pagesize;
//第六步:获取当前页面的内容
$sql="select * from contents where title=$titleid limit $startno,$pagesize";
$rs=mysql_query($sql,$link);
?>

mysql_close()关闭数据库

如果没有的话,系统也会自动关闭的

数据库使用原则,尽量晚创建,早释放

取得前一次操作说影响的记录数

SqlTool工具类封装

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
<?php
class SqlTool{
private $conn;
private $host = "localhost";
private $user = "root";
private $password = "root";
private $db = "test";
function SqlTool(){
$this->conn=mysql_connect($this->host,$this->user,$this->password);
if (!$this->conn) {
die("连接数据库失败:").mysql_error();
}
mysql_select_db($db);
mysql_query('set names utf8');
}

public function exeute_dql($sql){
$res = mysql_query($sql);
return $res;
}
//完成 update,delete,insert;
public function exeute_dml($sql){
$b=mysql_query($sql);
if (!$b) {
return 0;//失败
}else{
if (mysql_affected_rows($this->conn)>0) {
return 1;//表示成功
}else{
return 2;//表示没有行数影响
}
}
}
}
?>

调用类方法

1
2
3
4
5
6
7
<?php 
require "SqlTool.class.php";
$sql = " ";
$sqlTool = new SqlTool();
$res=$sqlTool->exeute_dml($sql);

?>

$res = mysql_query($sql,$conn);
获取行数:$rows = mysql_affected_rows();
获取列数:$cols = mysql_num_fields($res);

输出表头:
for($i = 0;$i<$colums;$i++) {
$field_name=mysql_field_name($res,$i);
echo “$field_name“;
}

mysql_insert_id 取得上一步insert操作产生的id号