使用php进行mysql数据库编程_[PHP]PHP编程操作Mysql数据库的三种方式

当我开始去接触PHP的时候,真切的感受到其所具有的魅力,本着学习的态度和打破固有的语言和模式的想法,开始了PHP之旅,总的来说,走的还是比较顺利,在其中能够看到C,Java,Perl影子,学习曲线不大,但是做好产品仍然有着一条漫漫长路。

多余的话不说了,慢慢感受和领悟,本文主要讲述PHP操作数据库的三种扩展。

如下图是PHP访问数据库的三种扩展方式:

0818b9ca8b590ca3270a3433284dd417.png

下面举出三种方式访问数据库并查询数据的实例代码:

1.mysql扩展

//1:获取数据库连接

$connection = @ mysql_connect('127.0.0.1:3306', 'root', 'root') or die('Mysql connection failed ' . mysql_error());

//2:选择数据库

mysql_select_db('phptest') or die('Database phptest not exist ' . mysql_error());

//3:查询数据

$sql = 'SELECT id as `编号`, name as `姓名`, birthday as `出生日期`, phone as `联系方式` , address as `地址` ' .

'FROM  `t_user` LIMIT 0 , 30';

$result = mysql_query($sql) or die('Query failed ' . mysql_error());

//4:处理查询结果

#打印查询数据

echo '

#打印列信息

$i = 0;

echo '

';

while ($i 

$meta = mysql_fetch_field($result);

echo '

';

echo $meta->name;

echo '

';

$i++;

}

echo '

';

#打印行记录

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {

echo '

';

foreach ($line as $value) {

echo '

' . $value . '';

}

echo '

';

}

echo '

';

//5:释放结果内存

mysql_free_result($result);

//6:关闭数据库连接

mysql_close($connection);

?>

2.mysqli扩展

#使用面向对象的方式操作mysql数据库

//1:创建mysqli对象

$mysqli = new mysqli();

//2:连接数据库

$mysqli->connect('127.0.0.1', 'root', 'root');

$mysqli->select_db('phptest');

if ($mysqli->connect_errno) {

echo '连接数据库失败';

exit ();

}

//3:获取MySQLi_STMT(执行SQL命令)对象,$stmt

$sql = 'SELECT id as `编号`, name as `姓名`, birthday as `出生日期`, phone as `联系方式` , address as `地址` ' .

'FROM  `t_user` LIMIT 0 , 30';

if ($stmt = $mysqli->prepare($sql)) {

#执行查询

$stmt->execute();

$stmt->bind_result($id, $name, $birthday, $phone, $address);

#打印查询数据

echo '

#打印列信息

echo '

';

$meta = $stmt->result_metadata()->fetch_fields();

foreach ($meta as $val) {

echo '

';

echo $val->name;

echo '

';

}

echo '

';

while ($stmt->fetch()) {

echo '

';

echo '

' . $id . '';

echo '

' . $name . '';

echo '

' . $birthday . '';

echo '

' . $phone . '';

echo '

' . $address . '';

echo '

';

}

echo '

';

echo '

查询结果记录数:' . $stmt->num_rows.'
';

//4:关闭MySQLi_STMT

$stmt->close();

}

//5:关闭数据库连接

$mysqli->close();

?>

上面使用的是mysqli扩展的面向对象风格的方式进行数据库操作,如何要使用面向过程的风格操作数据库则需要使用函数。比如关闭数据库连接,面向对象风格则是:$mysqli->close() 而使用面向过程风格则是:close($mysqli),具体详则可以参见PHP_Manual。

3.PDO_MYSQL扩展

数据库连接配置信息pdo-inc.php:

$dsn = 'mysql:host=127.0.0.1:3306;dbname=phptest';

$username = 'root';

$password = 'root';

$opt = array (

PDO :: ATTR_TIMEOUT => 40

);

?>

使用PDO访问数据库

//1:引入数据库连接信息

require_once ('pdo-inc.php');

//2:创建PDO对象

try {

$pdo = new PDO($dsn, $username, $password, $opt);

} catch (PDOException $e) {

echo '数据库连接失败 ' . $e->getMessage();

exit ();

}

$sql = 'SELECT id as `编号`, name as `姓名`, birthday as `出生日期`, phone as `联系方式` , address as `地址` ' .

'FROM  `t_user` LIMIT 0 , 30';

//3:创建预编译命令对象PDOStatement

if ($stmt = $pdo->prepare($sql)) {

//4:执行

$stmt->execute();

#打印查询数据

echo '

echo '

';

for ($i = 0, $columnCount = $stmt->columnCount(); $i 

$meta = $stmt->getColumnMeta($i);

echo '

';

echo $meta['name'];

echo '

';

}

echo '

';

$row_num = 0;

while ($row = $stmt->fetch(PDO :: FETCH_NUM)) {

$row_num++;

echo '

';

foreach ($row as $value) {

echo '

' . $value . '';

}

echo '

';

}

echo '

';

#需要统计查询的行数

echo '一共' . $row_num . '条记录
使用PDOStatement::rowCount来统计,一共' . $stmt->rowCount() . '条记录';

//5:关闭游标

$stmt->closeCursor();

}

//6:释放PDO对象

$pdo = null;

?>

看到上面代码很明显的不同在于访问Mysql数据库,却再也看不到Mysql相关函数和字样,这一点正是PDO所希望的,PDO使得PHP访问数据库将面向接口而不是具体的实现,这也为改变数据库而不用担心应用程序与数据库过度的耦合提供了基础。简而言之就是做到了面向对象中的面向接口编程的原则。

就操作数据而言,更多的是针对API来编程,具备数据库的相关知识(主要是SQL)和熟悉相关API既可以操作数据库,面对PHP操作数据库的多种扩展,到底使用哪一种方式,暂时不知道,看情况吧。

本文出自 “野马红尘” 博客,谢绝转载!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值