php文档阅读器,5.PHP - 作业部落 Cmd Markdown 编辑阅读器

Apache-Ignite-1.9.0-中文开发手册

5.PHP

5.1.PHP PDO

5.1.1.摘要

PHP提供了一个轻量级、一致的接口来访问数据库,叫做PHP数据对象-PDO,这个扩展依赖于若干特定数据库的PDO驱动,其中之一是PDO_ODBC,它可以接入任何实现了自己的ODBC驱动的数据库。

通过使用Ignite的ODBC驱动,从PHP应用中就可以接入Ignite集群,然后访问和修改数据,本文就会介绍如何达到该目的。

5.1.2.配置ODBC驱动

Ignite遵守ODBC协议,并且实现了自己的ODBC驱动,这个驱动会用于PHP的PDO框架接入Ignite集群。

查看本系列文档的ODBC部分,可以知道如何在目标系统上安装和配置这个驱动,安装完毕后,就可以进入下一个章节。只能使用Ignite的1.8.0及以后的版本中的ODBC驱动,之前的版本不支持PHP的PDO框架。

5.1.3.安装和配置PHP PDO

要安装PHP,PDO以及PDO_ODBC驱动,可以看PHP的相关资源。下载并安装期望的版本,注意,在PHP的5.1.0版本中,默认开启了PDO驱动,在Windows环境下,可以从这里下载PHP的二进制包;

配置PHP的PDO框架;

启用PDO_ODBC驱动:

在Windows中,需要在php.ini文件中将extension=php_pdo_odbc.dll的注释去掉,并且确保extension_dir指向php_pdo_odbc.dll所在的目录,另外,这个目录还需要加入PATH环境变量;

在类Unix系统中,通常可能只需要简单地安装一个特定的PHP_ODBC包,比如,Ubuntu14.04中已经安装了php5-odbc;

如果必要,在一些特定的系统中,无法按照常规方法配置和构建PDO_ODBC驱动,但是大多数情况下,简单地安装PHP和PDO_ODBC驱动就可以了。

5.1.4.启动Ignite集群

PHP PDO准备就绪之后,就可以通过一个常规的配置启动Ignite集群,然后在PHP应用中接入集群并且查询和修改集群的数据。

首先,集群端已经起用了ODBC处理器,如何做呢,在每个集群节点的IgniteConfiguration中加入odbcConfiguration就可以了。

下一步,列出IgniteConfiguration中与特定数据模型有关的所有缓存的配置,因为之后要在PHP PDO端执行SQL查询,所有每个缓存的配置都需要包含一个QueryEntity的定义,可以查看有关SQL查询的文档,来了解有关QueryEntity和SQL查询的更多信息。

可以使用下面的配置模板启动一个Ignite集群:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:util="http://www.springframework.org/schema/util"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util.xsd">

5.1.5.从PHP端接入Ignite集群

要从PHP PDO端接入Ignite,需要正确地配置DSN,在下面的示例中,假定DSN名为LocalApacheIgniteDSN。注意,PHP PDO端必须配置使用DSN。

最后,都配置好之后,就可以在Ignite和PHP PDO应用之间相互连接了,可以像下面这样执行一些查询:

Insert:

try{

// Connecting to Ignite using pre-configured DSN.

$dbh=newPDO('odbc:LocalApacheIgniteDSN');

// Changing PDO error mode.

$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

// Preparing query.

$dbs=$dbh->prepare('INSERT INTO Person (_key, firstName, lastName, resume, salary)

VALUES (?, ?, ?, ?, ?)');

// Declaring parameters.

$key=777;

$firstName="James";

$lastName="Bond";

$resume="Secret Service agent";

$salary=65000;

// Binding parameters.

$dbs->bindParam(1,$key);

$dbs->bindParam(2,$firstName);

$dbs->bindParam(3,$lastName);

$dbs->bindParam(4,$resume);

$dbs->bindParam(5,$salary);

// Executing the query.

$dbs->execute();

}catch(PDOException$e){

print"Error!: ".$e->getMessage()."\n";

die();

}

?>

Update:

try{

// Connecting to Ignite using pre-configured DSN.

$dbh=newPDO('odbc:LocalApacheIgniteDSN');

// Changing PDO error mode.

$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

// Executing the query. The salary field is an indexed field.

$dbh->query('UPDATE Person SET salary = 42000 WHERE salary > 50000');

}catch(PDOException$e){

print"Error!: ".$e->getMessage()."\n";

die();

}

?>

Select:

try{

// Connecting to Ignite using pre-configured DSN.

$dbh=newPDO('odbc:LocalApacheIgniteDSN');

// Changing PDO error mode.

$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

// Executing the query and getting a result set. The salary field is an indexed field.

$res=$dbh->query('SELECT firstName, lastName, resume, salary from Person

WHERE salary > 12000');

if($res==FALSE)

print_r("Exception");

// Printing results.

foreach($resas$row){

print_r($row);

}

}catch(PDOException$e){

print"Error!: ".$e->getMessage()."\n";

die();

}

?>

Delete:

try{

// Connecting to Ignite using pre-configured DSN.

$dbh=newPDO('odbc:LocalApacheIgniteDSN');

// Changing PDO error mode.

$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

// Performing query. Both firstName and lastName are non indexed fields.

$dbh->query('DELETE FROM Person WHERE firstName = \'James\' and lastName = \'Bond\'');

}catch(PDOException$e){

print"Error!: ".$e->getMessage()."\n";

die();

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值