PHP与MySQL的衔接有三种API接口,分别是:PHP的MySQL扩展、PHP的mysqli扩展、PHP数据目标(PDO),下面针对以上三种衔接方法做下总结,以备在不同场景下选出最优计划。
PHP的MySQL扩展是规划开发允许php使用与MySQL数据库交互的前期扩展。MySQL扩展供给了一个面向进程的接口,并且是针对MySQL4.1.3或者更早版别规划的。因而这个扩展尽管能够与MySQL4.1.3或更新的数据库服务端进行交互,但并不支撑后期MySQL服务端供给的一些特性。因为太陈旧,又不安全,所以已被后来的mysqli彻底替代;
PHP的mysqli扩展,咱们有时称之为MySQL增强扩展,能够用于使用MySQL4.1.3或更新版别中新的高级特性。其特色为:面向目标接口、prepared句子支撑、多句子履行支撑、业务支撑、增强的调试才能、嵌入式服务支撑、预处理方法彻底处理了sql注入的问题。不过其也有缺陷,便是只支撑mysql数据库。假如你要是不操作其他的数据库,这无疑是最好的挑选。
PDO是PHPDataObjects的缩写,是PHP使用中的一个数据库抽象层标准。PDO供给了一个一致的API接口能够使得你的PHP使用不去关怀具体要衔接的数据库服务器体系类型,也便是说,假如你使用PDO的API,能够在任何需要的时分无缝切换数据库服务器,比如从Oracle到MySQL,只是需要修正很少的PHP代码。其功用类似于JDBC、ODBC、DBI之类接口。同样,其也处理了sql注入问题,有很好的安全性。不过他也有缺陷,某些多句子履行查询不支撑(不过该状况很少)。

php

官文对于三者之间也做了列表性的比较:
PHP的mysqli扩展PDOPHP的mysql扩展
引入的PHP版别5.05.03.0之前
PHP5.x是否包括是是是
MySQL开发状况活泼在PHP5.3中活泼仅保护
在MySQL新项目中的建议使用程度建议-首选建议不建议
API的字符集支撑是是否
服务端prepare句子的支撑状况是是否
客户端prepare句子的支撑状况否是否
存储进程支撑状况是是否
多句子履行支撑状况是大多数否
是否支撑所有MySQL4.1以上功用是大多数否
从官方给出的这份成果上来看,优先引荐msqli,其次是PDO。而“民间”给出的成果很多是倾向于使用PDO,因为其不担有跨库的长处,更有读写速度快的特色。
1、PHP与Mysql扩展(本扩展自PHP5.5.0起已抛弃,并在将来会被移除),PHP原生的方法去衔接数据库,是面向进程的
$mysql_conf=array(
‘host’=>’127.0.0.1:3306’,
‘db’=>’test’,
‘db_user’=>’root’,
‘db_pwd’=>’root’,
);
$mysql_conn=@mysql_connect($mysql_conf[‘host’],$mysql_conf[‘db_user’],$mysql_conf[‘db_pwd’]);if(!$mysql_conn){
die(“couldnotconnecttothedatabase:\n”.mysql_error());//确诊衔接过错}
mysql_query(“setnames’utf8′”);//编码转化$select_db=mysql_select_db($mysql_conf[‘db’]);if(!$select_db){
die(“couldnotconnecttothedb:\n”.mysql_error());
}
$sql=”select*fromuser;”;
$res=mysql_query($sql);if(!$res){
die(“couldgettheres:\n”.mysql_error());
}while($row=mysql_fetch_assoc($res)){
print_r($row);
}
mysql_close($mysql_conn);?>
2、PHP与Mysqli扩展,面向进程、目标
$mysql_conf=array(
‘host’=>’127.0.0.1:3306’,
‘db’=>’test’,
‘db_user’=>’root’,
‘db_pwd’=>’joshua317’,
);
$mysqli=@newmysqli($mysql_conf[‘host’],$mysql_conf[‘db_user’],$mysql_conf[‘db_pwd’]);if($mysqli->connect_errno){
die(“couldnotconnecttothedatabase:\n”.$mysqli->connect_error);//确诊衔接过错}
$mysqli->query(“setnames’utf8’;”);//编码转化$select_db=$mysqli->select_db($mysql_conf[‘db’]);if(!$select_db){
die(“couldnotconnecttothedb:\n”.$mysqli->error);
}$sql=”selectuidfromuserwherename=’joshua’;”;
$res=$mysqli->query($sql);if(!$res){
die(“sqlerror:\n”.$mysqli->error);
}
while($row=$res->fetch_assoc()){
var_dump($row);
}
$res->free();
$mysqli->close();?>
3、PHP与PDO扩展,面向进程、目标
$mysql_conf=array(
‘host’=>’127.0.0.1:3306’,
‘db’=>’test’,
‘db_user’=>’root’,
‘db_pwd’=>’joshua317’,
);
$pdo=newPDO(“mysql:host=”.$mysql_conf[‘host’].”;dbname=”.$mysql_conf[‘db’],$mysql_conf[‘db_user’],$mysql_conf[‘db_pwd’]);//创建一个pdo目标$pdo->exec(“setnames’utf8′”);
$sql=”select*fromuserwherename=?”;
$stmt=$pdo->prepare($sql);
$stmt->bindValue(1,’joshua’,PDO::PARAM_STR);
$rs=$stmt->execute();if($rs){
//PDO::FETCH_ASSOC关联数组方式//PDO::FETCH_NUM数字索引数组方式while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
var_dump($row);
}
}
$pdo=null;//封闭衔接?>

phpmysql连接数据库

1.最简单的方式-mysql(面向过程)
<?php
$con=mysql_connect(“localhost”,”root”,”password”);
$select_db=mysql_select_db(‘test’);
if(!$select_db){
die(“couldnotconnecttothedb:n”.mysql_error());
}
//查询代码
$sql=”select*fromdb_table”;
$res=mysql_query($sql);
if(!$res){
die(“couldgettheres:n”.mysql_error());
}
while($row=mysql_fetch_assoc($res)){
print_r($row);
}
//查询代码
//关闭数据库连接
mysql_close($con);
?>
2.新的方式-mysqli(面向过程)
$mysql_server_name=’localhost’;//改成自己的mysql数据库服务器
$mysql_username=’root’;//改成自己的mysql数据库用户名
$mysql_password=’password’;//改成自己的mysql数据库密码
$mysql_database=’test’;//改成自己的mysql数据库名
$conn=mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database);//连接数据库
//连接数据库错误提示
if(mysqli_connect_errno($conn)){
die(“连接MySQL失败:”.mysqli_connect_error());
}
mysqli_query($conn,”setnamesutf8″);//数据库编码格式
//mysqli_set_charset($conn,”utf8″);//设置默认客户端字符集。
//mysqli_select_db($conn,$mysql_database);//更改连接的默认数据库
//查询代码
$sql=“select*fromdb_table”;
$query=mysqli_query($conn,$sql);
while($row=mysqli_fetch_array($query)){
echo$row[‘title’];
}
//查询代码
//释放结果集+关闭MySQL数据库连接
mysqli_free_result($result);
mysqli_close($conn);
3、常用方式-mysqli(面向对象)
复制代码
//连接数据库方式1
$conn=newmysqli(‘localhost’,’root’,’password’,’test’);
//连接数据库方式2
//$conn=newmysqli();
//$conn->connect(‘localhost’,’root’,’password’,’test’);
//checkconnection(检查PHP是否连接上MYSQL)
if($conn->connect_errno){
printf(“Connectfailed:%sn”,$conn->connect_error);
exit();
}
//查询代码
$sql=“select*fromdb_table”;
$query=$conn->query($sql);
while($row=$query->fetch_array()){
echo$row[‘title’];
}
//查询代码
//释放结果集+关闭MySQL连接
$query1->free_result();
$conn->close();
4、PDO连接MySQL数据库
<?php
$db=newPDO(‘mysql:host=localhost;dbname=test’,’root’,’password’);
try{
foreach($db->query(‘select*fromdb_table’)as$row){
print_r($row);
}
$db=null;//关闭数据库
}catch(PDOException$e){
echo$e->getMessage();
}
?>
5、ADODB连接MySQL数据库
<?php
//安装驱动-引入类即可
require_once’./adodb5/adodb.inc.php’;
$conn=&ADONewConnection(‘mysql’);
$conn->connect(‘localhost’,’root’,’password’,’test’);
$conn->Execute(“setnamesutf8”);
//查询代码
$res=$conn->Execute(“select*fromdb_table”);
if(!$res){
echo$conn->ErrorMsg();
}else{
var_dump($res);
}
?>
//关闭连接
$conn->close();

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。