数据库连接扩展
摘要:PHP中一个数据库可能有一个或者多个扩展,其中既有官方的,也有第三方提供的。像Mysql常用的扩展有原生的mysql库,也可以使用增强版的mysqli扩展,还可以使用PDO进行连接与操作。不同的扩展提供基本相近的操作方法,不同的是可能具备一些新特性,以及操作性能可能会有所不同。
1.mysql扩展进行数据库连接的方法:
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');
例子:
<?php $link = mysql_connect('127.0.0.1', 'code1', '') or die('数据库连接失败'); mysql_select_db('db_name'); mysql_query("set names 'utf8'"); $result = mysql_query('select * from user limit 1'); $row = mysql_fetch_assoc($result); print_r($row);
2.mysqli扩展:
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');
例子:(面向过程风格)
<?php $link = mysqli_connect('127.0.0.1', 'user', 'pwd' ) or die( '连接失败' ); mysqli_select_db( $link, 'db_name'); mysqli_query( $link, "set names 'utf8' "); $result = mysqli_query( $link, 'select * from user limit 1'); $row = mysqli_fetch_row($result); print_r($row);
面向对象风格:
<?php header("content-type:text/html; charset=utf8"); define("HOST",'localhost'); define("USER",'root'); define("PWD",'root'); define("DBNAME",'bookstore'); //面向对象风格 $db = new mysqli(HOST,USER,PWD,DBNAME); /* *$db = new mysqli(); *$db->connect(HOST, USER, PWD,DBNAME); *$db->close(); */ if($db->connect_errno){ echo '连接失败!'.mysqli_connect_errno().':'.mysqli_connect_error(); exit(); } $db->query("set names utf8 "); //$db->set_charset('utf8'); $result=$db->query("select * from user "); $row = $result->fetch_array(); var_dump($row);
3.PDO扩展:
$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; $user = 'dbuser'; $password = 'dbpass'; $dbh = new PDO($dsn, $user, $password); 例子: <?php $dsn = 'mysql:dbname=db_name;host=127.0.0.1'; $user = 'root'; $password = ''; $dbh = new PDO($dsn, $user, $password) or die('连接数据库失败'); $dbh->query( "set names 'utf8' " ); $result = $dbh->query('select * from user limit 1'); $row =$result->fetch(PDO::FETCH_ASSOC); //设置输出数组形式 print_r($row); /*PDO数组样式:
*要注意的是,这里包括mysql_fetch_...()函数,这里的参数是一个结果集,而不是一个SQL语句
*select/desc/describe/show/explain执行成功返回mysqli_result对象,执行失败返回false,对于其余SQL语句的执行的返回值是一个布尔类型的值 *PDO::FETCH_ASSOC-->关联数组mysql_fetch_assoc($result) *PDO::FETCH_NUM-->数字索引数组mysql_fetch_row($result) *PDO::FETCH_BOTH-->两者数组形式都有,默认。mysql_fetch_array() *PDO::FETCH_OBJ-->按照对象的形式$arr=mysql_fetch_object($result) mysql_fetch_object()得到对象结果集,调用和对象调用属性一样:$arr->name;//调用改对象中的name属性 *PDO::FETCH_BOUND-->以布尔值的形式返回 *PDO::FETCH_LAZY-->以关联数组,数字数组,对象3钟形式返回结果 */
明天你会感谢此刻自己的努力!