Date
May. 19th, 2024
 
2024年 4月 12日

Post: PHP Primer 028 : 数据库操作

PHP Primer 028 : 数据库操作

Published 12:02 Feb 02, 2012.

Created by @ezra. Categorized in #Programming, and tagged as #PHP.

Source format: Markdown

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);
?>
Pinned Message
HOTODOGO
I'm looking for a SOFTWARE PROJECT DIRECTOR / SOFTWARE R&D DIRECTOR position in a fresh and dynamic company. I would like to gain the right experience and extend my skills while working in great teams and big projects.
Feel free to contact me.
For more information, please view online résumé or download PDF
本人正在寻求任职 软件项目经理 / 软件技术经理 岗位的机会, 希望加⼊某个新鲜⽽充满活⼒的公司。
如有意向请随时 与我联系
更多信息请 查阅在线简历下载 PDF