-
php构造函数连数据库,使用PDO构造函数连接数据库及DSN详解
2021-04-08 09:38:22使用PDO构造函数连接数据库及DSN详解pdo是php5中新加入的...PDO的概特点以及安装PDO的方法》中,我们介绍了什么是PDO,介绍了PDO的特点以及安装,那么我们这篇文章介绍PDO构造函数连接数据库以及DSN详情!PDO构造...使用PDO构造函数连接数据库及DSN详解
pdo是php5中新加入的数据库抽象层,为了解决访问不同数据库统一接口的问题。类似于PEAR::DB类和ADODB类的操作,不过它是直接封装再php扩展中,可以自由选择使用。
在上一篇《什么是PDO?PDO的概特点以及安装PDO的方法》中,我们介绍了什么是PDO,介绍了PDO的特点以及安装,那么我们这篇文章介绍PDO构造函数连接数据库以及DSN详情!
PDO构造函数连接数据库
在PDO中,要建立数据库的连接需要实例化 PDO 的构造函数,PDO构造函数的语法格式如下:_construct(string $dsn[,string $username[,string $password[,array $driver_options]]])
构造函数的参数说明如下:
dsn:数据源名称,包括主机名端口号和数据库名称。
username:连接数据库的用户名。
password:连接数据库的密码。
driver_options:连接数据库的其它选项。
那么我们下面直接用实例讲解,通过PDO连接 MySQL 数据库,具体代码如下:<?php
header("Content-Type:text/html; charset=utf-8"); //设置页面的编码格式
$dbms = "mysql"; // 数据库的类型
$dbName ="php_cn"; //使用的数据库名称
$user = "root"; //使用的数据库用户名
$pwd = "root"; //使用的数据库密码
$host = "localhost"; //使用的主机名称
$dsn = "$dbms:host=$host;dbName=$dbName ";
try{ //捕获异常
$pdo = new PDO($dsn,$user,$pwd); //实例化对象
echo "PDO连接数据库成功";
}catch (Exception $e){
echo $e->getMessage()."
";}
页面输出的结果如下图:
注意:如果上面有的地方填错了,会通过try catch语句抛出异常!
DSN详解
什么是DSN?
DSN是Data Source Name(数据源名称)的首字母缩写。DSN提供连接数据库需要的信息。PDO的DSN包括3部分:PDO驱动名称(如:mysql、sqlite或者pgsql)、冒号和驱动特定的语法。每种数据库都有其特定的驱动语法。
在使用不同的数据库时,必须明确数据库服务器是完全独立与 PHP 的,是实体。但是在实际的情况可能是数据库服务器与 Web服务器不在同一台计算上,此时需要通过PDO连接数据库时,就修改DSN中的主机名称。
由于数据库服务器只是特定的端口上监听连接请求。每种数据库服务器具有一个默认的端口号(MySQL 是3306),但是数据库管理员可以对端口号进行修改,因此有可能 PHP找不到数据库的端口号,此时就可以在 DSN中包含端口号。比如:$dsn="mysql:host=127.0.0.1;port=3306;dbname=admin";
由于一个数据库中可能同时拥有多个数据库,所以通过DSN连接数据库时,通常都包括数据库名称,这样可以确保连接的是用户想要的数据库,而不是其他的数据库了!
关于使用PDO构造函数连接数据库和DSN详解我们就介绍到这里,大家可以在本地测试一下,那么我们下面给大家介绍 PDO中执行SQL语句的几种方法,具体请阅读《PDO中执行SQL语句的三种方法》!
-
php构造函数连数据库,利用php的构造函数与析构函数编写Mysql数据库查询类
2021-04-08 09:38:19很多时候,我们在后台需要频繁的操作数据库,这种情况下就需要连接数据库。我用的是php+mysql数据库来进行开发的。所以下面的栗子也就只是针对php+mysql的情况而定...这样做其实没有什么错,但这样做会无缘无故的产...很多时候,我们在后台需要频繁的操作数据库,这种情况下就需要连接数据库。我用的是php+mysql数据库来进行开发的。所以下面的栗子也就只是针对php+mysql的情况而定,其他的连接方式我就不讨论了,个人能力有限哈~~
我在刚开学习php连接mysql数据库时,都是自己声明一个$con对象,然后通过该对象来创建和数据库的连接,最好关闭连接的时候回收该对象,这样做其实没有什么错,但这样做会无缘无故的产生许多声明的$con对象与关闭$con对象的代码,对于一个合格的、优秀的程序员来说,代码的精简才会让人看的赏心悦目,是吧
前天我在公交上看有关php的构造函数与析构函数,构造函数就是在创建对象的时候,会自动调用的函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法;而析构函数则是在销毁一个类之前执行的一些操作或完成的一些功能,这两个函数有点像一个汉堡包的上下层,咱们的对象就在中间的那一块。
讲解玩构造函数和析构函数,接下来就进入我们的正题把。其实我们完全可以利用php的构造函数与析构函数给数据库类各个查询方法的注入$con对象,同时自动在每次查询之后自动回收$con对象。这确实是一个以逸待劳的好方法,希望能给大家一点启示。
下面咱们就来举个栗子来说明下这个方法是怎么用的把
首先,我们编写一个model.php如下,先声明一个私有的类成员$con作为这个类的全局变量。可以把建立数据库连接的代码放在testtable这个数据库查询类的构造函数__construct()里面,把关闭数据库连接的代码放在析构函数__destruct()里面,其中__construct()与__destruct()是php中的函数名保留关键字,也就是一旦声明这两个函数,就被认为是构造函数与析构函数。
值得注意的是,为声明的私有类成员$con赋值,必须用$this->con的形式。不可以直接$con=xx,如果是$con=xx,php认为这个变量的作用范围仅在当前函数内,不能作用于整个类。这个跟变量的权限有关系,不太清楚这块的同学可以去查看下变量的访问权限这块的内容。
构造函数,要求一个变量$databaseName,此乃调用者需要查询的数据库名。
class testtable{
private $con; //该变量是私有变量,打个不太恰当的比方,就是你女朋友只能是你的女朋友,不可能是别人的女朋友是吧,不然就坏了
function __construct($databaseName){
$this->con=mysql_connect("localhost","root","root"); //连接数据库信息
if(!$this->con){
die("连接失败!");
}
mysql_select_db($databaseName,$this->con);
mysql_query("set names utf8;");
}
public function getAll(){
$result=mysql_query("select * from testtable order by date desc;");
$testtableList=array();
for($i=0;$row=mysql_fetch_array($result);$i++){
$testtableList[$i]['id']=$row['id'];
$testtableList[$i]['username']=$row['username'];
$testtableList[$i]['number']=$row['number'];
$testtableList[$i]['date']=$row['date'];
}
return $testtableList;
}
function __destruct(){
mysql_close($this->con); //关闭数据库连接
}
}
?>
做完之后,getAll()这个数据库查询类的查询方法,无须声明数据库连接与关闭数据库连接,直接就可以进行查询,查询完有析构函数进行回收。在controller.php中先引入这个testtable查询类,再进行getAll()方法的调用,则得到如上图的效果:
header("Content-type: text/html; charset=utf-8");
include_once("model.php"); //引入testtable查询类
$testtable=new testtable("test");
$testtableList=$testtable->getAll();
echo "
for($i=0;$i
echo
"
".$testtableList[$i]['id']."".$testtableList[$i]['username']."".$testtableList[$i]['number']."".$testtableList[$i]['date']."";}
echo "
";?>
到这里,咱们的工作就完成了,是不是没有想象中的那么复杂哈,其实这个方法完全可以放在公共模块中,只要哪里需要用到数据库查询操作的,都可以直接调用该方法,其实这个类写的还不太全面,它只能做查询操作,有兴趣的小伙伴可以对上面的类进行下变更,让他能同时进行CURD的各种操作。
以上就是本人的笔记,希望能对有的小伙伴起到帮助,同时希望大家能积极做出评论,我会很认真的为大家解答的!
-
java中,数据库返回一个空的结果集,并赋给变量去调用构造函数,生成的对象是null还是什么?...
2021-03-24 12:58:58//数据库返回一个结果集,现在假设select的是数据库中没有的数据,那么结果集为空while (rs.next()){String str = rs.getString("Name");//此时str应该是null?int id = rs.getInt("Id"); //id为0?A a= new A(id,...ResultSet rs= pstmt.executeQuery();//数据库返回一个结果集,现在假设select的是
数据库中没有的数据,那么结果集为空
while (rs.next())
{
String str = rs.getString("Name");//此时str应该是null?
int id = rs.getInt("Id"); //id为0?
A a= new A(id,str); //调用构造函数(定义见第二段代码),那a是什么?是
null?此构造器还会被调用吗?a这个对象会生成吗?
public final class A //这个是A类的定义,成员变量和构造函数
{
private int id;
private String name;
public A(int Id,String Word)
{
this.id = Id;
this.name = Word;
}
}
我现在项目中要通过a这个对象来判断数据库返回的是否为空集,请问该如何判断?由此引出了上述问题(具体问题可以看代码段的注释)
-
mysql数据库dsn_使用PDO构造函数连接数据库及DSN详解
2021-01-28 02:29:45pdo是php5中新加入的数据库抽象层,...PDO的概特点以及安装PDO的方法》中,我们介绍了什么是PDO,介绍了PDO的特点以及安装,那么我们这篇文章介绍PDO构造函数连接数据库以及DSN详情!PDO构造函数连接数据库在PDO中,...pdo是php5中新加入的数据库抽象层,为了解决访问不同数据库统一接口的问题。类似于PEAR::DB类和ADODB类的操作,不过它是直接封装再php扩展中,可以自由选择使用。大理石检测平台
在上一篇《什么是PDO?PDO的概特点以及安装PDO的方法》中,我们介绍了什么是PDO,介绍了PDO的特点以及安装,那么我们这篇文章介绍PDO构造函数连接数据库以及DSN详情!
PDO构造函数连接数据库
在PDO中,要建立数据库的连接需要实例化 PDO 的构造函数,PDO构造函数的语法格式如下:
构造函数的参数说明如下:
dsn:数据源名称,包括主机名端口号和数据库名称。
username:连接数据库的用户名。
password:连接数据库的密码。
driver_options:连接数据库的其它选项。
那么我们下面直接用实例讲解,通过PDO连接 MySQL 数据库,具体代码如下:
页面输出的结果如下图:
注意:如果上面有的地方填错了,会通过try catch语句抛出异常!
DSN详解
什么是DSN?
DSN是Data Source Name(数据源名称)的首字母缩写。DSN提供连接数据库需要的信息。PDO的DSN包括3部分:PDO驱动名称(如:mysql、sqlite或者pgsql)、冒号和驱动特定的语法。每种数据库都有其特定的驱动语法。
在使用不同的数据库时,必须明确数据库服务器是完全独立与 PHP 的,是实体。但是在实际的情况可能是数据库服务器与 Web服务器不在同一台计算上,此时需要通过PDO连接数据库时,就修改DSN中的主机名称。
由于数据库服务器只是特定的端口上监听连接请求。每种数据库服务器具有一个默认的端口号(MySQL 是3306),但是数据库管理员可以对端口号进行修改,因此有可能 PHP找不到数据库的端口号,此时就可以在 DSN中包含端口号。比如:
由于一个数据库中可能同时拥有多个数据库,所以通过DSN连接数据库时,通常都包括数据库名称,这样可以确保连接的是用户想要的数据库,而不是其他的数据库了!
原文:https://www.cnblogs.com/furuihua/p/12172460.html
-
mysql+pdo+dsn_使用PDO构造函数连接数据库及DSN详解
2021-03-03 22:17:00pdo是php5中新加入的数据库抽象层,...PDO的概特点以及安装PDO的方法》中,我们介绍了什么是PDO,介绍了PDO的特点以及安装,那么我们这篇文章介绍PDO构造函数连接数据库以及DSN详情!PDO构造函数连接数据库在PDO中,... -
pdo mysql dsn_使用PDO构造函数连接数据库及DSN详解
2021-01-19 10:42:43PDO是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么 php_mysql.dll、php_pgsql.dll、php_mssql.dll、...使用PDO构造函数连接数据库及DSN详解pdo是... -
C++私有构造函数的作用
2021-01-21 17:13:11当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也是说它不属于class对象本身的调用,假如构造函数是私有的,由于在class外部不允许访问私有成员,所以这将导致... -
C++中将构造函数或析构函数定义为private
2015-09-14 13:44:29很多情况下要求当前的程序中只有一个object。... 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私 -
构造函数与析构函数回顾
2018-06-23 14:13:39什么是构造方法1 当使用new关键字创建对象完成时,第1个自动调用的方法,就是构造方法;2 构造方法的名称是固定的:void __construct ([ mixed $args [, $... ]] )3 构造方法可以带参数,也可以不带参数;构造... -
私有构造函数 私有析构函数
2012-10-07 16:51:17很多情况下要求当前的程序中只有一个object。... 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私 -
C++构造函数私有化作用
2019-06-24 16:01:50很多情况下要求当前的程序中只有一个object... 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的, 由于... -
C++私有构造函数的使用
2019-04-24 21:21:40很多情况下要求当前的程序中只有一个object... 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的,由于在... -
详解C++中如何将构造函数或析构函数的访问权限定为private
2021-01-01 04:27:59当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的,由于在class外部不允许访问私有成员,所以这将导致... -
C++ 私有构造函数的作用
2017-03-18 20:34:00很多情况下要求当前的程序中只有一个object。... 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有 -
JavaScript 构造函数对象
2019-11-13 22:23:311.什么是对象 (这里并不是男女朋友的那个对象) 现实生活中:万物皆对象,对象是一个具体的事物 ,看得见摸得着的实物。例如,一本书、一辆汽车、 一个人 可以是“对象”,一个数据库、一张网页, 一个与远程服务器的... -
私有构造函数,析构函数,单例模式
2014-08-31 15:55:59很多情况下要求当前的程序中只有一个object。... 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数