PHP进阶(第七弹:数据库操作)

PHP通过安装相应的扩展来实现数据库操作,MsSQL,MySQL,Oracle,PostgreSQL等数据库都能支持。常用的LAMP架构指的是:Linux、Apache、Mysql、PHP,因此Mysql数据库在PHP中的应用最为广泛。

if (function_exists('mysql_connect')) {
    echo 'Mysql扩展已经安装';
}

数据库扩展

Mysql常用的扩展有原生的mysql库,也可以使用增强版的mysqli扩展,还可以使用PDO进行连接与操作。

mysql扩展进行数据库连接的方法:

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

mysqli扩展:

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

PDO扩展:

$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'mysql_user';
$password = 'mysql_password';
$dbh = new PDO($dsn, $user, $password);

连接MySql数据库

如:

$host = '127.0.0.1';
$user = 'admin';
$pass = '';
// 连接数据库
$link = mysql_connect($host, $user, $pass);
// 选择数据库
mysql_select_db('testdb');
// 设置一下当前连接使用的字符编码,一般使用utf8编码。
mysql_query("set names 'utf8'");

查询操作

// 发送查询指令
$res = mysql_query('select * from user limit 1');
// 对于查询类的语句会返回一个资源句柄(resource),可以通过该资源获取查询结果集中的数据。
$row = mysql_fetch_array($res);
var_dump($row);
// PHP默认使用最近的数据库连接执行查询,但如果存在多个连接的情况,则可以通过参数指定连接。
// $res = mysql_query('select * from user limit 1', $link1);

PHP有多个函数可以获取数据集中的一行数据,最常用的是mysql_fetch_array,如上例。

可以通过设定参数MYSQL_NUM只获取数字索引数组,等同于mysql_fetch_row,如果设定参数为MYSQL_ASSOC则只获取关联索引数组,等同于mysql_fetch_assoc函数。

$row = mysql_fetch_row($result);
$row = mysql_fetch_array($result, MYSQL_NUM);
$row = mysql_fetch_assoc($result);
$row = mysql_fetch_array($result, MYSQL_ASSOC);

插入操作

// 执行插入操作
$id = '10'
$name = 'tom';
$sql = "insert into user(user_id, user_name) values('$id', '$name')";
mysql_query($sql);

// 在mysql中,执行插入语句以后,可以得到自增的主键id,通过PHP的mysql_insert_id函数可以获取该id。
$uid = mysql_insert_id();

更新与删除操作

$sql = "update user set name = 'tom' where id=2 limit 1";
if (mysql_query($sql)) {
    echo '更新成功';
    // 对于删除与更新操作,可以通过mysql_affected_rows来获取更新过的数据行数,如果数据没有变化,则结果为0。
    echo mysql_affected_rows();
}

$sql = "delete from user where id=2 limit 1";
if (mysql_query($sql)) {
    echo '删除成功';
    echo mysql_affected_rows();
}

关闭MySQL连接

当数据库操作完成以后,可以使用mysql_close关闭数据库连接。当PHP执行完毕以后,默认会自动关闭数据库连接。

mysql_close();

虽然PHP会自动关闭数据库连接,但是在对性能要求比较高的情况下,可以在进行完数据库操作之后尽快关闭数据库连接,以节省资源,提高性能。

在存在多个数据库连接的情况下,可以设定连接资源参数来关闭指定的数据库连接。

$link = mysql_connect($host, $user, $pass);
mysql_close($link);
发布了165 篇原创文章 · 获赞 47 · 访问量 14万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章