不等数据库的数量源构造格局是不平等的,大家初叶布局第2个PDO应用澳门永利娱乐总站

$count = $db->exec("INSERT INTO foo SET name = ‘heiyeluren’,gender=’男’,time=NOW()");
echo $count;

  1. 面向对象的不二等秘书籍

<?php
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
$rs = $db->query("SELECT * FROM foo");
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>

  当然,1般景观下我们是使用PDO::FETCH_ASSOC,具体应用什么,依照你协调的急需,其余获取项目参考手册。

  【简单总括】

  我们也足以行使那种获取形式:

  这些可怜处理类是集成PHP 伍内置的相当处理类,大家大概的看一下PHP
5内置的百般处理类协会:

  其实大概啦。假如你想取得钦定记录里多个字段结果的话,能够选用PDOStatement::fetchColumn():

  假若想1次把数量都取获得数组里能够这么:

  正是布局大家的DSN(数据源),看看当中的音信包罗:数据库类型是mysql,主机地址是localhost,数据库名称是test,就这么多少个音讯。分化数据库的数目源构造方式是不一致的。

  每趟执行查询现在,errorCode()
的结果都以流行的,所以大家能够很简单自身控制错误音讯突显。

  每便执行查询现在,errorCode()
的结果都以风靡的,所以大家得以很不难本身说了算错误音信显示

  大家也得以使用这种获取情势:

<?php
try {
 $db = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass);
 $db = null;
} catch (PDOException $e) {
 print “Error: ” . $e->getMessage() . “<br/>”;
 die();
}
?>

  一. 面向对象的点子

  除了上边那种获取数据的法门,还有那种:

  假若程序中相见错误如何是好?我们那边描述PDO类的错误音信和极度处理。

<?php
$rs = $db->prepare(“SELECT * FROM foo”);
$rs->execute();
while($row = $rs->fetch()){
 print_r($row);
}
?>

<?php
 $dsn = "mysql:host=localhost;dbname=test";
 $db = new PDO($dsn, ‘root’, ”);
 $count = $db->exec("INSERT INTO foo SET name = ‘heiyeluren’,gender=’男’,time=NOW()");
 echo $count;
 $db = null;
?>

  三遍操作就像此不难,或然跟原先的从未有过太大差距,跟ADOdb倒是有几分相似。
继续掌握】

  不亮堂啥意思,作者们来日趋讲讲。那行:

<?php
class PDOException extends Exception
{
 public $errorInfo = null; // 错误新闻,能够调用 PDO::errorInfo() 或
PDOStatement::errorInfo()来做客
 protected $message; // 十分音信,能够试用 Exception::getMessage()
来访问
 protected $code; // SQL状态错误代码,能够行使 Exception::getCode()
来访问
}
?>

<?php
class PDOException extends Exception
{
 public $errorInfo = null; // 错误信息,可以调用 PDO::errorInfo() 或 PDOStatement::errorInfo()来访问
 protected $message; // 异常信息,可以试用 Exception::getMessage() 来访问
 protected $code; // SQL状态错误代码,可以使用 Exception::getCode() 来访问
}
?>

  先看代码:

我们初叶组织第3个PDO应用,建立叁个pdo.php文件在Web文书档案目录下:

$db = new PDO($dsn, ‘root’, ”);

  便是布局我们的DSN(数据源),看看个中的音讯包含:数据库类型是mysql,主机地址是localhost,数据库名称是test,就那样多少个新闻。分歧数据库的数目源构造形式是分化的。

pdo操作数据库教程入门教程

  大家运用setFetchMode方法来设置获取结果集的重回值的档次,同样类型还有:

$db = null;

  调用大家连年成功的PDO对象来推行一个询问,那个查询是一个插入一条记下的操作,使用PDO::exec()
方法会重临八个震慑记录的结果,所以大家输出这一个结果。最终依然须求收尾对象财富:

  即使想1回把数量都得到到数组里能够这么:

  PDO::CASE_LOWELAND — 强制列名是小写
  PDO::CASE_NATURAL — 列名依照原有的法子
  PDO::CASE_UPPE兰德Enclave — 强制列名称为大写

  不通晓啥意思,笔者们来逐步讲讲。那行:

  相应的,在代码中得以方便的调用 getFile() 和 getLine()
来开始展览不当定位,更便利的展开调剂。

<?php
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
$rs = $db->query(“SELECT * FROM foo”);
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>

  PDO::FETCH_ASSOC — 关联数组格局
  PDO::FETCH_NUM — 数字索引数组情势
  PDO::FETCH_BOTH — 两者数组方式都有,那是缺省的
  PDO::FETCH_OBJ — 依据目的的花样,类似于之前的
mysql_fetch_object()

  【错误处理】

  先看看假诺总是错误等的处理,使用面向对象的点子来处理:

  PDO和PDOStatement对象有errorCode() 和 errorInfo()
方法,如若未有其余不当, errorCode() 再次回到的是: 00000
,不然就会回去壹些错误代码。errorInfo()
重返的3个数组,包蕴PHP定义的错误代码和MySQL的错误代码和错误音讯,数组结构如下:

<?php
 $rs = $db->query("SELECT * FROM foo");
 while($row = $rs->fetch()){
  print_r($row);
 }
?>

<?php
 foreach($db->query(“SELECT * FROM foo”)){
  print_r($row);
 }
?>

  我们看当中的记录,数字索引和关联索引都有,浪费能源,大家只供给关联索引的:

<?php
class Exception
{
 // 属性
 protected $message = ‘Unknown exception’; // 至极新闻
 protected $code = 0; // 用户自定义相当代码
 protected $file; // 爆发尤其的文本名
 protected $line; // 产生非常的代码行号

Array
(
 [0] => 42S22
 [1] => 1054
 [2] => Unknown column ‘aaa’ in ‘field list’
)

  查询操作主假设PDO::query()、PDO::exec()、PDO::prepare()。PDO::query()主要是用以有记录结果回到的操作,尤其是SELECT操作,PDO::exec()首假使针对性没有结果集合再次来到的操作,比如INSEEvoqueT、UPDATE、DELETE等操作,它回到的结果是当前操作影响的列数。PDO::prepare()首要是预处理操作,供给通过$rs->execute()来执行预处理之中的SQL语句,那个法子能够绑定参数,功用相比强硬,不是本文能够不难说领会的,大家能够参考手册和其余文书档案。
获取结果集操作重要是:PDOStatement::fetchColumn()、PDOStatement::fetch()、
PDOStatement::fetchALL()。PDOStatement::fetchColumn()
是得到结果钦命第3条记下的某部字段,缺省是首先个字段。PDOStatement::fetch()
是用来博取一条记下,PDOStatement::fetchAll()是收获具有记录集到2个中,获取结果能够透过
PDOStatement::setFetchMode来设置要求结果集合的花色。

  查询操作主即便PDO::query()、PDO::exec()、PDO::prepare()。PDO::query()首如若用来有记录结果重临的操作,尤其是SELECT操作,PDO::exec()首借使针对性没有结果集合再次回到的操作,比如INSE奥迪Q3T、UPDATE、DELETE等操作,它
再次回到的结果是当前操作影响的列数。PDO::prepare()首要是预处理操作,需求经过$rs->execute()来执行预处理内部的SQL语句,
那些主意能够绑定参数,功能相比强硬,不是本文能够简单说领悟的,大家能够参考手册和其余文书档案。
获取结果集操作首若是:PDOStatement::fetchColumn()、PDOStatement::fetch()、
PDOStatement::fetchALL()。PDOStatement::fetchColumn()
是获得结果钦点第3条记下的某些字段,缺省是首个字段。PDOStatement::fetch()
是用来博取一条记下,PDOStatement::fetchAll()是获取具有记录集到叁个中,获取结果能够经过
PDOStatement::setFetchMode来设置需求结果集合的品种。

  不难的下结论一下上边包车型大巴操作:

$dsn = "mysql:host=localhost;dbname=test";

  相应的,在代码中得以适合的调用 getFile() 和 getLine()
来进行不当定位,更利于的进展调节。


$count = $db->exec(“INSERT INTO foo SET name =
‘heiyeluren’,gender=’男’,time=NOW()”);
echo $count;

$db = new PDO($dsn, ‘root’, ”, array(PDO::ATTR_PERSISTENT => true));

 // 方法
 final function getMessage(); // 重回格外音信
 final function getCode(); // 重返格外代码
 final function getFile(); // 重回爆发尤其的公文名
 final function getLine(); // 重回发生尤其的代码行号
 final function getTrace(); // backtrace() 数组
 final function getTraceAsString(); // 已格成化成字符串的 getTrace()
音讯
}
?>

<?php
try {
 $db = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass);
 $db = null;
} catch (PDOException $e) {
 print "Error: " . $e->getMessage() . "<br/>";
 die();
}
?>

  PDO::FETCH_ASSOC — 关联数组情势
  PDO::FETCH_NUM — 数字索引数组情势
  PDO::FETCH_BOTH — 两者数组格局都有,这是缺省的
  PDO::FETCH_OBJ — 依据目标的款式,类似于从前的
mysql_fetch_object()

用 pdo
插入一条记下老是失误,又不象别的函数这样自动的会输出错误,查了须臾间才清楚它的错误处理确实相比尤其.

Array
(
 [0] => 42S22
 [1] => 1054
 [2] => Unknown column ‘aaa’ in ‘field list’
)

  其实大约啦。假若你想赢得钦定记录里贰个字段结果的话,可以运用
PDOStatement::fetchColumn():

  那几个充足处理类是集成PHP 五内置的越发处理类,大家简要的看一下PHP
5内置的十一分处理类协会:

  别的有多个科学普及的操作,3个是PDO::lastInsertId()和PDOStatement::rowCount()。
PDO::lastInsertId()是回去上次布署操作,主键列类型是自增的尾声的自增ID。PDOStatement::rowCount()主即使用于PDO::query()和PDO::prepare()实行DELETE、INSE福睿斯T、UPDATE操作影响的结果集,对
PDO::exec()方法和SELECT操作无效。

  一般选择fetchColumn()来开始展览count总计大概有个别只供给单字段的记录很好操作。

**  假使大家想提取数额以来,那么就应有利用数据获得功用。(上面用到的$db都以上边已经几次三番好的靶子)

  暗中同意那几个不是长连接,若是急需多少库长连接,供给最后加3个参数:array(PDO::ATTHighlander_PE奇骏SISTENT
=> true) 变成这样:

  三遍操作就这么简单,恐怕跟在此之前的远非太大分别,跟ADOdb倒是有几分相似。
**继续领悟】

  先看看如若连接错误等的处理,使用面向对象的办法来处理:

<?php
$rs = $db->query("SELECT COUNT(*) FROM foo");
$col = $rs->fetchColumn();
echo $col;
?>

  PDO::CASE_LOWEHaval — 强制列名是小写
  PDO::CASE_NATURAL — 列名依照原来的措施
  PDO::CASE_UPPE中华V — 强制列名叫题写

  私下认可那些不是长连接,如若急需多少库长连接,须要最后加一个参数:array(PDO::ATT索罗德_PECRUISERSISTENT
=> true) 变成这样:

$dsn = “mysql:host=localhost;dbname=test”;

$db = null;

  其它有多少个广大的操作,八个是PDO::lastInsertId()和PDOStatement::rowCount()。
PDO::lastInsertId()是回去上次安顿操作,主键列类型是自增的尾声的自增ID。PDOStatement::rowCount()重要是用来PDO::query()和PDO::prepare()实行DELETE、INSE卡宴T、UPDATE操作影响的结果集,对
PDO::exec()方法和SELECT操作无效。

<?php
$rs = $db->query("SELECT * FROM foo");
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>

Array
([0] => Array(
 [id] => 1
 [0] => 1
 [name] => heiyeluren
 [1] => heiyeluren
 [gender] => 男
 [2] => 男
 [time] => 2006-10-28 23:14:23
 [3] => 2006-10-28 23:14:23
)
}

  那里运用大家PHP
伍面向对象的老大处理特征,假诺中间有充裕的话就开端化调用PDOException来早先化二个老大类。

<?php
$rs = $db->prepare("SELECT * FROM foo");
$rs->execute();
while($row = $rs->fetch()){
 print_r($row);
}
?>

大家先河布局第一个PDO应用,建立一个pdo.php教程文本在Web文书档案目录下:
PDO功效确实强大,别的还有1部分情节小编未曾讲到,比如绑定参数、预处理、存款和储蓄过程、事务处理等等作用。其它还有分歧数额扩
DSN的布局,Oracle数据库本人许多非同小可的事物,都亟需长远去读书驾驭,那篇小说就只是简而言之述了有的入门知识,算是对PDO多少个简易的垂询呢
<?php
 $dsn =
mysql教程:host=localhost;dbname=test”;
 $db = new PDO($dsn, ‘root’, ”);
 $count = $db->exec(“INSERT INTO foo SET name =
‘heiyeluren’,gender=’男’,time=NOW()”);
 echo $count;
 $db = null;
?>

  【错误处理】

<?php
$rs = $db->query(“SELECT COUNT(*) FROM foo”);
$col = $rs->fetchColumn();
echo $col;
?>

http://www.osedu.net/article/php/2011-05-16/223.html

<?php
 $rs = $db->query(“SELECT * FROM foo”);
 while($row = $rs->fetch()){
  print_r($row);
 }
?>

  简单的总计一下上边的操作:

$db = new PDO($dsn, ‘root’, ”, array(PDO::ATTR_PERSISTENT => true));

  那里运用大家PHP
5面向对象的老大处理特征,借使内部有格外的话就起始化调用PDOException来发轫化二个充裕类。

  大家看在那之中的记录,数字索引和关联索引都有,浪费能源,大家只供给关联索引的:

  先看代码:

  二. 使用面向进程的章程

<?
$db = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass);
$rs = $db->query("SELECT aa,bb,cc FROM foo");
if ($db->errorCode() != ‘00000’){
 print_r($db->errorInfo());
 exit;
}
$arr = $rs->fetchAll();
print_r($arr);
$db = null;
?>

  初步化二个PDO对象,构造函数的参数第3个就是大家的数据源,第二个是接二连三数据库服务器的用户,第多少个参数是密码。大家无法确定保障连接成功,后边大家会讲到十分境况,那里大家临时认为它是连连成功的。

  看上边的代码,setAttribute()
方法是安装某些属性,主要品质有:PDO::ATT哈弗_CASE、PDO::ATTR_EPRADOBMWX5MODE等等,我们那里须求设置的是
PDO::ATTXC90_CASE,正是大家应用关联索引获取数据集的时候,关联索引是大写照旧小写,有多少个选项:

Array
([0] => Array(
 [id] => 1
 [0] => 1
 [name] => heiyeluren
 [1] => heiyeluren
 [gender] => 男
 [2] => 男
 [time] => 2006-10-28 23:14:23
 [3] => 2006-10-28 23:14:23
)
}

PHP中PDO快速入门教程

时间:2011-05-16 11:24:35  来源:  作者:

  大家选取setFetchMode方法来设置获取结果集的重回值的类别,同样类型还有:

  PDO和PDOStatement对象有errorCode() 和 errorInfo()
方法,假设未有其它错误, errorCode() 重回的是: 00000
,否则就会回去1些错误代码。errorInfo()
再次来到的一个数组,包涵PHP定义的错误代码和MySQL的错误代码和错误音信,数组结构如下:

  如若大家想提取数额以来,那么就活该利用数据获得成效。(上边用到的$db都以上面已经一连好的指标)

  PDOException非凡类的品质结构:

<?php
$rs = $db->query(“SELECT * FROM foo”);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>

<?php
class Exception
{
 // 属性
 protected $message = ‘Unknown exception’; // 异常信息
 protected $code = 0; // 用户自定义异常代码
 protected $file; // 发生异常的文件名
 protected $line; // 发生异常的代码行号

 // 方法
 final function getMessage(); // 返回异常信息
 final function getCode(); // 返回异常代码
 final function getFile(); // 返回发生异常的文件名
 final function getLine(); // 返回发生异常的代码行号
 final function getTrace(); // backtrace() 数组
 final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
}
?>

  假设程序中蒙受错误如何是好?大家那里描述PDO类的错误新闻和丰硕处理。

$db = new PDO($dsn, ‘root’, ”);

  PDOException十分类的性质结构:

  除了上边那种获取数据的章程,还有那种:

  调用大家连年成功的PDO对象来施行1个询问,那个查询是1个布置一条记下的操作,使用PDO::exec()
方法会再次来到3个震慑记录的结果,所以大家输出这些结果。最后依然要求收尾对象财富:

  当然,壹般景况下我们是接纳PDO::FETCH_ASSOC,具体运用什么,依照你协调的内需,别的获取项目参考手册。

<?
$db = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass);
$rs = $db->query(“SELECT aa,bb,cc FROM foo”);
if ($db->errorCode() != ‘00000’){
 print_r($db->errorInfo());
 exit;
}
$arr = $rs->fetchAll();
print_r($arr);
$db = null;
?>

  壹般采取fetchColumn()来展开count计算大概有个别只供给单字段的笔录很好操作。

  看上边的代码,setAttribute()
方法是设置某个属性,主要品质有:PDO::ATT奇骏_CASE、PDO::ATTR_ELX570奥德赛MODE等等,大家这里供给设置的是
PDO::ATT索罗德_CASE,便是大家使用关联索引获取数据集的时候,关联索引是大写照旧小写,有多少个选项:

  二. 应用面向进程的不二等秘书诀

  伊始化多少个PDO对象,构造函数的参数第多少个正是大家的数据源,第3个是接连数据库服务器的用户,第五个参数是密码。我们不能够担保连接成功,前面大家会讲到很是景况,这里大家姑且认为它是接二连三成功的。

<?php
 foreach($db->query("SELECT * FROM foo")){
  print_r($row);
 }
?>

  从地点的运用看出,PDO成效确实强大,此外还有部分内容本人从没讲到,比如绑定参数、预处理、存款和储蓄进度、事务处理等等作用。其余还有差别数额扩
DSN的构造,Oracle数据库自身许多非正规的事物,都急需深切去上学明白,那篇小说就只是简短的描述了部分入门知识,算是对PDO3个总结的垂询呢。

相关文章