PHP连接MySQL数据库三种实现方法

引言

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是PHP Data Objects的缩写,是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以使得你的PHP应用不去关心具体要连接的数据库服务器系统类型,也就是说,如果你使用PDO的API,可以在任何需要的时候无缝切换数据库服务器,比如从Oracle 到MySQL,仅仅需要修改很少的PHP代码。其功能类似于JDBC、ODBC、DBI之类接口。同样,其也解决了sql注入问题,有很好的安全性。不过他也有缺点,某些多语句执行查询不支持(不过该情况很少)。

代码示例

PHP与Mysql扩展(本扩展自 PHP 5.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("could not connect to the database:\n" . mysql_error());//诊断连接错误
}
mysql_query("set names 'utf8'");//编码转化
$select_db = mysql_select_db($mysql_conf['db']);
if (!$select_db) {
  die("could not connect to the db:\n" . mysql_error());
}
$sql = "select * from user;";
$res = mysql_query($sql);
if (!$res) {
  die("could get the res:\n" . mysql_error());
}

while ($row = mysql_fetch_assoc($res)) {
  print_r($row);
}

mysql_close($mysql_conn);

PHP与Mysqli扩展,面向过程、对象

<?php
$mysql_conf = array(
  'host'  => '127.0.0.1:3306',
  'db'   => 'test',
  'db_user' => 'root',
  'db_pwd' => 'joshua317',
  );

$mysqli = @new mysqli($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);
if ($mysqli->connect_errno) {
  die("could not connect to the database:\n" . $mysqli->connect_error);//诊断连接错误
}
$mysqli->query("set names 'utf8';");//编码转化
$select_db = $mysqli->select_db($mysql_conf['db']);
if (!$select_db) {
  die("could not connect to the db:\n" . $mysqli->error);
}$sql = "select uid from user where name = 'joshua';";
$res = $mysqli->query($sql);
if (!$res) {
  die("sql error:\n" . $mysqli->error);
}
 while ($row = $res->fetch_assoc()) {
    var_dump($row);
  }

$res->free();
$mysqli->close();
?>

PHP与PDO扩展,面向过程、对象

<?php
$mysql_conf = array(
  'host'  => '127.0.0.1:3306',
  'db'   => 'test',
  'db_user' => 'root',
  'db_pwd' => 'joshua317',
  );
try {
  $pdo = new PDO("mysql:host=" . $mysql_conf['host'] . ";dbname=" . $mysql_conf['db'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);//创建一个pdo对象
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  // 设置sql语句查询如果出现问题 就会抛出异常
  //set_exception_handler("cus_exception_handler");
} catch (PDOException $e) {
  die("connect error:".$e->getMessage());
}
$pdo->exec("set names 'utf8'");
$sql = "select * from user where name = ?";
$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);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • javascript连接mysql与php通过odbc连接任意数据库的实例

    脑洞大开用javascript链接mysql,2个小时总算实现了,用到了odbc,后面又想到用php链接odbc链接数据库,也实现了,就把案例放一下. 注意事项: 1.javascript连接mysql使用的是"new ActiveXObject"这个对象,这个对象只有IE浏览器支持,所以只能在IE浏览器下实现连接mysql. 2.javascript也是通过odbc连接mysql,和php不同的是,其中一个参数,图片中,红色的是php的连接数据源名,蓝色的是javascript连接数

  • PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】

    本文实例讲述了PHP连接MySQL数据库的三种方式.分享给大家供大家参考,具体如下: PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案. PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展.MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的.因此这个扩展虽然可以与MySQL4.1.3或更

  • php连接mysql数据库最简单的实现方法

    在连接MySQL数据库之前,您必须指定以下信息: MySQL数据源名称或DSN:指定MySQL数据库服务器的地址.您可以使用IP地址或服务器名称,例如,127.0.0.1 或 localhost MySQL数据库名称:表示要连接的数据库的名称. 用户名和密码:指定用于连接MySQL数据库服务器的MySQL用户的用户名和密码.该帐户必须具有足够的权限才能访问上面指定的数据库. 我们将使用: 本地MySQL数据库服务器,这样DSN是localhost. 在classicmodels作为样本数据库.

  • 解决php用mysql方式连接数据库出现Deprecated报错问题

    以上是用php5.5 连接mysql数据库时报的错. 于是我用php5.4 连接正常没有报错. 这与mysql版本无关系,php 5.x版本,如5.2.5.3.5.4.5.5,怕跟不上时代,新的服务器直接上5.5,但是程序出现如下错误:Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in,看意思就很

  • PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】

    本文实例讲述了PHP基于MySQLI函数封装的数据库连接工具类.分享给大家供大家参考,具体如下: mysql.class.php: <?php class mysql { private $mysqli; private $result; /** * 数据库连接 * @param $config 配置数组 */ public function connect($config) { $host = $config['host']; //主机地址 $username = $config['usern

  • PHP使用mysql与mysqli连接Mysql数据库用法示例

    本文实例讲述了PHP使用mysql与mysqli连接Mysql数据库的方法.分享给大家供大家参考,具体如下: 代码很简单直接上了 <?php /** * @Author: HTL * @Description: Description */ // 降低PHP默认的错误级别 // 只显示除禁用以外的所有错误 // 解决因为PHP5.3+版本太高而导致在使用mysql_connect时出现的弃用警告"Deprecated: mysql_connect(): The mysql extensio

  • PHP连接MYSQL数据库的3种常用方法

    对于PHP入门用户来说,我们只要掌握基本的数据库写入.读取.编辑.删除等基本的操作就算入门,也可以写出简单的程序出来,比如留言本.新闻文章系统等等.在整个过程中,MySQL数据库的连接也是比较重要的,可以使用多种方法进行连接,对于新手来说我们就不要去分析哪种方式对于系统资源的优化程度,我们先能连接上就行. 这里,整理几种常用的PHP连接MYSQL数据库的方法. 第一.常用普通方法 $mysql_server="localhost"; $mysql_username="数据库用

  • PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解

    本文实例讲述了PHP5.5基于mysqli连接MySQL数据库和读取数据操作.分享给大家供大家参考,具体如下: 在学习1. 开启PHP的API支持 (1)首先修改您的php.ini的配置文件. 查找下面的语句: ;extension=php_mysqli.dll 将其修改为: extension=php_mysqli.dll (2)重新启动Apache/IIS,即可. (3)说明:PHP需要单独的文件来支持这个扩展库,一般在PHP目录下的ext目录里能找到php_mysqli.dll文件(PHP

  • PHP连接MySQL数据库并以json格式输出

    1.简介 PHP连接数据库有多种方法,现介绍常用的MySQL数据库连接方法,PHP连接MySQL也有两种方式,一是面向对象,二是面向过程方式,两种方法稍有区别.下面通过代码介绍两种方法连接MySQL并以json格式输出. 2.面向对象方式 <?php header("content-Type: text/html; charset=utf-8");//字符编码设置 $servername = "localhost"; $username = "roo

  • PHP连接MySQL数据库三种实现方法

    引言 PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案. PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展.MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的.因此这个扩展虽然可以与MySQL4.1.3或更新的数据库服务端进行交互,但并不支持后期MySQL服务端提供的一些特性.由于太古

  • php 读取mysql数据库三种方法

    复制代码 代码如下: <? $dbh = @mysql_connect("localhost:3306","root","000000"); /* 定义变量dbh , mysql_connect()函数的意思是连接mysql数据库, "@"的意思是屏蔽报错 */ if(!$dbh){die("error");} /* die()函数的意思是将括号里的字串送到浏览器并中断PHP程式 (Script).括

  • ASP.NET连接MySql数据库的2个方法及示例

    方法一: 使用MySQL官方组件使用MySQL推出的 MySQL Connector/Net 组件, 该组件是MySQL为ADO.NET访问MySQL数据库设计的.NET专用访问组件.完成该组件后,需要在项目中引用这个组件,也可以直接在配置文件的< assemblies>节点内添加下面的节点: 复制代码 代码如下: <add assembly="MySql.Data, Version=5.1.5.0, Culture=neutral, PublicKeyToken=C5687F

  • php无法连接mysql数据库的正确解决方法

    即使连接Mysql的语句正确,php也无法连接mysql数据库,出现如下图所示的结果: 首先是在Apache服务器的conf/httpd.conf下的任意位置都没有:PHPIniDir "php压缩目录"这一项. 如"C:/php-5.4.43-Win32-VC9-x86是php的压缩目录,应该有PHPIniDir "C:/php-5.4.43-Win32-VC9-x86" 之后,需要把php压缩目录,与php压缩目录/ext添加到环境变量Path值中.

  • java连接mysql数据库乱码的解决方法

    解决方法一: mysql安装时候的编码, 看下my.ini,有无 复制代码 代码如下: [mysql] default-character-set=utf8 [client] default-character-set=utf8 [mysqld] default-character-set=utf8创建表的时候设置: DROP TABLE IF EXISTS `Company`; CREATE TABLE IF NOT EXISTS `Company` ( `Cname` VARCHAR(10)

  • PHP远程连接MYSQL数据库非常慢的解决方法

    不知道如何解决,所以把他空间所在的服务器上也装了个MYSQL,才解决问题,今天又有个这个问题,不能也在这服务器上装一个MYSQL吧,Search: PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在my.ini(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入skip-name-resolve这一句,保存. 开始-->运行-->

  • c++连接mysql数据库的两种方法(ADO连接和mysql api连接)

    第一种方法可以实现我当前的需求,通过连接不同的字符串来连接不同的数据库.暂时只连接了mysql,sqlserver,oracle,access.对于access,因为它创建表的SQL语句不太兼容标准SQL语句,需要做一些处理,这里暂时不说.第二种方法只能针对于mysql数据库的连接,不过用这种方法不用安装MyODBC服务器程序. 不管用哪种方法,首先需要安装Mysql数据库,安装方法请看"mysql安装及一些注意点".最好安装一个Navicat for mysql,方便操作mysql数

  • .net MVC 连接数据本地数据库三种方法总结

    .net MVC 连接数据本地数据库三种方法 <appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" />

  • C++连接mysql数据库的两种方法小结

    现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用access和sql server比较多.通过网上的一些资料和自己的摸索,大致清楚了C++连接mysql的方法.可以通过2种方法实现. 第一种方法是利用ADO连接, 第二种方法是利用mysql自己的api函数进行连接. 第一种方法可以实现我当前的需求,通过连接不同的字符串来连接不同的数据库.暂时只连接了mysql,sqlserver,oracle,access.对于access,因为它创建表的

随机推荐