PHP Primer 028 : 数据库操作

1 min read Feb 02, 2012

PHP Primer 028 : 数据库操作

Table of Content

数据库操作几乎是开发中无法避免的一环,PHP 对数据库的支持很十分全面,主流数据库例如 MsSQL、MySQL、Sybase、Db2、Oracle、PostgreSQL,Access 等。

由于 MySQL 与 PHP 同属 LAMP 范畴,因此 PHP 中 MySQL 的使用可谓十分广泛。

连接数据库

mysql 版:


<?php
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');

mysqli 版:


<?php
$link = mysqli_connect('mysql_host', 'mysql_user', 'mysql_password');

选择数据库


mysql_select_db('some_db');

设定字符编码


mysql_query("set names 'utf8'");

数据库查询

我们可以通过 mysql_query 执行查询语句,这种情况下会返回一个资源句柄(resource),通过这个资源可以得到查询结果的数组。


// 从最近的数据库中查询
$res = mysql_query('select * from t_user limit 1');
// 指定查询的数据库
// $res = mysql_query('select * from t_user limit 1', $link);

// 只获取数字索引数组:
$row = mysql_fetch_array($res);
// 等价于:
// $row = mysql_fetch_array($res, MYSQL_NUM);

// 只获取关联索引数组:
// $row = mysql_fetch_assoc($res);
// 等价于:
// $row = mysql_fetch_array($res, MYSQL_ASSOC);
var_dump($row);

Limit


$page = 2;
$n = 2;
$m = ($page - 1) * $n;
$sql = "select * from t_user limit $m, $n";
$result = mysql_query($sql);

$data = array();
while ($row = mysql_fetch_assoc($result)) {
    $data[] = $row;
}

数据库插入

类似的方法执行插入语句即可实现插入。这种情况下,可以得到自增长主键的 id 值。


mysql_query("insert into t_user(name, gender) values('Jack', 'male')");

$uid = mysql_insert_id();

数据库更新

同样,执行一条更新语句即可对数据进行更新。这种情况下返回布尔值,表示更新成功与否。可以通过 mysql_affected_rows() 函数获取更新过的数据行数,如果数据没有变化则返回0。


$sql = "update t_user set name = 'Mike' where id=2 limit 1";
if (mysql_query($sql)) {
	echo mysql_affected_rows();
}

数据库删除

与更新同理。


$sql = "delete from t_user where id=2 limit 1";
if (mysql_query($sql)) {
	echo mysql_affected_rows();
}

关闭数据库

要关闭数据库,只需要调用 mysql_close() 函数即可。你也可能需要指定关闭某个特定数据库。


// 关闭最近的数据库
mysql_close();
// 关闭指定的数据库
// mysql_close($link);
?>

Picsew | Ezra