当前位置: 编程技术>php
本页文章导读:
▪PHP中通过ADO调用Access数据库的方法测试不通过
我看了那篇《怎样在PHP中通过ADO调用Asscess数据库和COM程序》文章后,马上作了测试,结果失败了。伤心是不是。 怎么办?我只好去PHP官方网站求助,皇天不负有心人,终于我找到了答案.........
▪刚才在简化php的库,结果发现很多东西
php的ming库用来生成flash!虽然模块是试验性质的, 不过比较有趣。一张大大的表, 很有趣, 给人一种在8g的感觉。
sapi/php4activescript.dll (php5activescript.dll) - ActiveScript engine, allowing you to embed .........
▪smarty+adodb+部分自定义类的php开发模式
前几天把热网的后台基本弄好,腾出时间对工作总结了一下。 在设计模式上,我尝试着使用mvc模式的开发。用smarty控制显示,用case语句控制各种action,然后写好各种模块的class给action调用.........
[1]PHP中通过ADO调用Access数据库的方法测试不通过
来源: 互联网 发布时间: 2013-11-30
我看了那篇《怎样在PHP中通过ADO调用Asscess数据库和COM程序》文章后,马上作了测试,结果失败了。伤心是不是。
怎么办?我只好去PHP官方网站求助,皇天不负有心人,终于我找到了答案——
具体的解决方法如下:
(1)下载相应的ZIP包;同MICROSOFT公司的ADO一样,该东东用PHP实现ADO同各种各样数据库打交道(太好了,所有类型的数据库都能处理)。
(2)解包,里面文件很多,不过有用的只有ohtml.inc.php和adodb.inc.php,(经我测试并不是这样)把它们复制到相应目录下(或是安装php4的缺省目录下c:\php4\peer\,或是当前运行程序目录下,视include()函数而定);
(3)然后在本机的c:\myphp目录下(iis下设置通过http://localhost/jhk来访问),造了一个名为test.mdb的access库,里头再造个experts的表……。为了通过DSN来访问,我把刚才的ACCESS库在DSN中取名test。
(4)运行。看着说明书我造了这么个程序:
dbtest.php,内容如下:
然后,IE中打入:http://localhost/jhk/dbtest.php
唉!结果出来了。 令人基本满意!!
(5) 接着,我又想:还要设置DSN,烦不烦!绕过DSN应如何解决?因为在asp中,我习惯用conn.open("provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("../nydatabase.mdb"))来处理mdb库,那速度快呀!
?……想了又想,看了又看……。
找找找,……,嘿嘿,终于在testdatabases.inc.php 中找到了答案! 我再把刚才的程序改编:
运行。
一切搞定!(经我测试实际上并不能解决问题),大家可以看下一篇,就知道了
怎么办?我只好去PHP官方网站求助,皇天不负有心人,终于我找到了答案——
具体的解决方法如下:
(1)下载相应的ZIP包;同MICROSOFT公司的ADO一样,该东东用PHP实现ADO同各种各样数据库打交道(太好了,所有类型的数据库都能处理)。
(2)解包,里面文件很多,不过有用的只有ohtml.inc.php和adodb.inc.php,(经我测试并不是这样)把它们复制到相应目录下(或是安装php4的缺省目录下c:\php4\peer\,或是当前运行程序目录下,视include()函数而定);
(3)然后在本机的c:\myphp目录下(iis下设置通过http://localhost/jhk来访问),造了一个名为test.mdb的access库,里头再造个experts的表……。为了通过DSN来访问,我把刚才的ACCESS库在DSN中取名test。
(4)运行。看着说明书我造了这么个程序:
dbtest.php,内容如下:
代码如下:
<?php
include('tohtml.inc.php'); // load code common to ADODB
include('adodb.inc.php'); // load code common to ADODB
$conn = &ADONewConnection('access'); // create a connection
$conn->PConnect('test');// connect to MySQL, agora db
$sql = 'select name, group1 from experts';
$rs = $conn->Execute($sql);
rs2html($rs,'border=2 cellpadding=3',array('Customer Name','Customer ID'));
$rs->Close(); // optional
$conn->Close(); // optional
?>
include('tohtml.inc.php'); // load code common to ADODB
include('adodb.inc.php'); // load code common to ADODB
$conn = &ADONewConnection('access'); // create a connection
$conn->PConnect('test');// connect to MySQL, agora db
$sql = 'select name, group1 from experts';
$rs = $conn->Execute($sql);
rs2html($rs,'border=2 cellpadding=3',array('Customer Name','Customer ID'));
$rs->Close(); // optional
$conn->Close(); // optional
?>
然后,IE中打入:http://localhost/jhk/dbtest.php
唉!结果出来了。 令人基本满意!!
(5) 接着,我又想:还要设置DSN,烦不烦!绕过DSN应如何解决?因为在asp中,我习惯用conn.open("provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("../nydatabase.mdb"))来处理mdb库,那速度快呀!
?……想了又想,看了又看……。
找找找,……,嘿嘿,终于在testdatabases.inc.php 中找到了答案! 我再把刚才的程序改编:
代码如下:
<?php
include('tohtml.inc.php'); // load code common to ADODB
include('adodb.inc.php'); // load code common to ADODB
$db = &ADONewConnection("ado_access");
print "<h1>Connecting $db->databaseType...</h1>";
$access = 'test.mdb';
$myDSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;'.'DATA SOURCE='. $access . ';';.'USER ID=;PASSWORD=;';
if (@$db->PConnect($myDSN, "", "", "")) {
print "ADO version=".$db->_connectionID->version."
";
$sql = 'select name, group1 from experts';
$rs = $db->Execute($sql);
rs2html($rs,'border=2 cellpadding=3',array('Customer Name','Customer ID'));
} else print "ERROR: Access test requires a Access database $access".'
'.$db->ErrorMsg();
?>
include('tohtml.inc.php'); // load code common to ADODB
include('adodb.inc.php'); // load code common to ADODB
$db = &ADONewConnection("ado_access");
print "<h1>Connecting $db->databaseType...</h1>";
$access = 'test.mdb';
$myDSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;'.'DATA SOURCE='. $access . ';';.'USER ID=;PASSWORD=;';
if (@$db->PConnect($myDSN, "", "", "")) {
print "ADO version=".$db->_connectionID->version."
";
$sql = 'select name, group1 from experts';
$rs = $db->Execute($sql);
rs2html($rs,'border=2 cellpadding=3',array('Customer Name','Customer ID'));
} else print "ERROR: Access test requires a Access database $access".'
'.$db->ErrorMsg();
?>
运行。
一切搞定!(经我测试实际上并不能解决问题),大家可以看下一篇,就知道了
[2]刚才在简化php的库,结果发现很多东西
来源: 互联网 发布时间: 2013-11-30
php的ming库用来生成flash!虽然模块是试验性质的, 不过比较有趣。
一张大大的表, 很有趣, 给人一种在8g的感觉。
一张大大的表, 很有趣, 给人一种在8g的感觉。
-
sapi/php4activescript.dll (php5activescript.dll) - ActiveScript engine, allowing you to embed PHP in your Windows applications.
-
sapi/php4apache.dll (php5apache.dll) - Apache 1.3.x module.
-
sapi/php4apache2.dll (php5apache2.dll) - Apache 2.0.x module.
-
sapi/php4isapi.dll (php5isapi.dll) - ISAPI Module for ISAPI compliant web servers like IIS 4.0/PWS 4.0 or newer.
-
sapi/php4nsapi.dll (php5nsapi.dll) - Sun/iPlanet/Netscape server module.
-
sapi/php4pi3web.dll (no equivalent in PHP 5) - Pi3Web server module.
表格 6-1. PHP 扩展库
扩展库 说明 注解 php_bz2.dll bzip2 压缩函数库 无 php_calendar.dll 历法转换函数库 自 PHP 4.0.3 起内置 php_cpdf.dll ClibPDF 函数库 无 php_crack.dll 密码破解函数库 无 php_ctype.dll ctype 家族函数库 自 PHP 4.3.0 起内置 php_curl.dll CURL,客户端 URL 库函数库 需要:libeay32.dll,ssleay32.dll(已附带) php_cybercash.dll 网络现金支付函数库 PHP <= 4.2.0 php_db.dll DBM 函数库 已废弃。用 DBA 替代之(php_dba.dll) php_dba.dll DBA:数据库(dbm 风格)抽象层函数库 无 php_dbase.dll dBase 函数库 无 php_dbx.dll dbx 函数库 php_domxml.dll DOM XML 函数库 PHP <= 4.2.0 需要:libxml2.dll(已附带),PHP >= 4.3.0 需要:iconv.dll(已附带) php_dotnet.dll .NET 函数库 PHP <= 4.1.1 php_exif.dll EXIF 函数库 需要 php_mbstring.dll。并且在 php.ini 中,php_exif.dll 必须在 php_mbstring.dll之后加载。 php_fbsql.dll FrontBase 函数库 PHP <= 4.2.0 php_fdf.dll FDF:表单数据格式化函数库 需要:fdftk.dll(已附带) php_filepro.dll filePro 函数库 只读访问 php_ftp.dll FTP 函数库 自 PHP 4.0.3 起内置 php_gd.dll GD 库图像函数库 在 PHP 4.3.2 中删除。此外注意在 GD1 中不能用真彩色函数,用 php_gd2.dll 替代。 php_gd2.dll GD 库图像函数库 GD2 php_gettext.dll Gettext 函数库 PHP <= 4.2.0 需要 gnu_gettext.dll(已附带),PHP >= 4.2.3 需要 libintl-1.dll,iconv.dll(已附带)。 php_hyperwave.dll HyperWave 函数库 无 php_iconv.dll ICONV 字符集转换 需要:iconv-1.3.dll(已附带),PHP >=4.2.1 需要 iconv.dll php_ifx.dll Informix 函数库 需要:Informix 库 php_iisfunc.dll IIS 管理函数库 无 php_imap.dll IMAP,POP3 和 NNTP 函数库 无 php_ingres.dll Ingres II 函数库 需要:Ingres II 库 php_interbase.dll InterBase functions 需要:gds32.dll(已附带) php_java.dll Java 函数库 PHP <= 4.0.6 需要:jvm.dll(已附带) php_ldap.dll LDAP 函数库 PHP <= 4.2.0 需要 libsasl.dll(已附带),PHP >= 4.3.0 需要 libeay32.dll,ssleay32.dll(已附带) php_mbstring.dll 多字节字符串函数库 无 php_mcrypt.dll Mcrypt 加密函数库 需要:libmcrypt.dll php_mhash.dll Mhash 函数库 PHP >= 4.3.0 需要:libmhash.dll(已附带) php_mime_magic.dll Mimetype 函数库 需要:magic.mime(已附带) php_ming.dll Ming 函数库(Flash) 无 php_msql.dll mSQL 函数库 需要:msql.dll(已附带) php_mssql.dll MSSQL 函数库 需要:ntwdblib.dll(已附带) php_mysql.dll MySQL 函数库 PHP >= 5.0.0 需要 libmysql.dll(已附带) php_mysqli.dll MySQLi 函数库 PHP >= 5.0.0 需要 libmysql.dll(PHP <= 5.0.2 中是 libmysqli.dll)(已附带) php_oci8.dll Oracle 8 函数库 需要:Oracle 8.1+ 客户端库 php_openssl.dll OpenSSL 函数库 需要:libeay32.dll(已附带) php_oracle.dll Oracle 函数库 需要:Oracle 7 客户端库 php_overload.dll 对象重载函数库 自 PHP 4.3.0 起内置 php_pdf.dll PDF 函数库 无 php_pgsql.dll PostgreSQL 函数库 无 php_printer.dll 打印机函数库 无 php_shmop.dll 共享内存函数库 无 php_snmp.dll SNMP 函数库 仅用于 Windows NT! php_soap.dll SOAP 函数库 PHP >= 5.0.0 php_sockets.dll Socket 函数库 无 php_sybase_ct.dll Sybase 函数库 需要:Sybase 客户端库 php_tidy.dll Tidy 函数库 PHP >= 5.0.0 php_tokenizer.dll Tokenizer 函数库 自 PHP 4.3.0 起内置 php_w32api.dll W32api 函数库 无 php_xmlrpc.dll XML-RPC 函数库 PHP >= 4.2.1 需要 iconv.dll(已附带) php_xslt.dll XSLT 函数库 PHP <= 4.2.0 需要 sablot.dll,expat.dll(已附带)。PHP >= 4.2.1 需要 sablot.dll,expat.dll,iconv.dll(已附带)。 php_yaz.dll YAZ 函数库 需要:yaz.dll(已附带) php_zip.dll Zip 文件函数库 只读访问 php_zlib.dll ZLib 压缩函数库 自 PHP 4.3.0 起内置接下来看重要的 PHP 扩展配置部分,找到 Dynamic Extensions ,往下一点是 Windows Extensions 的配置部分。可以看到如:
;extension=php_bz2.dll
;extension=php_cpdf.dll
……
;extension=php_yaz.dll
;extension=php_zip.dll
这里列出了 PHP 的所有可支持扩展,前面都加了分号注释掉,表示目前 PHP 配置不支持该扩展,我们可以将分号去掉以便让 PHP 支持这些扩展,但是因为 dlls 文件夹里没有包含全部可扩展库的 DLL 文件,所以我们只能选择性的安装,需要知道如何获得其他 dlls 文件夹下没有提供的 dll 文件,可以查看《PHP 中文手册》(后面会提到它的下载方法)的相关部分。这里不做说明。
下面提几个 dlls 文件夹下包含的、比较实用的 PHP 扩展:
extension=php_curl.dll : CURL 扩展支持。
extension=php_gd2.dll : GD 图像库扩展支持。包括生成图像等的一系列函数,比较有用。
extension=php_ming.dll : Ming 库扩展支持,该扩展提供生成 flash 文件的相关函数,支持 flash 4 的大部分功能。
extension=php_pdf.dll : PDF 库扩展支持,该扩展提供操作 PDF 文件的函数的支持。
extension=php_xslt.dll : 提供 XSLT 扩展支持,该扩展提供对 XML 的转换。
以下列出默认情况下所有支持的 DLL 扩展的配置,去掉分号的表示支持,我们所要做的只是判断是否去掉分号而已。如果你暂时不知道你需要哪些扩展,那么避免麻烦就按照最大化安装,相应行应做如下设置:
;Windows Extensions
;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
;
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_crack.dll
extension=php_curl.dll
extension=php_db.dll
extension=php_dba.dll
extension=php_dbase.dll
extension=php_dbx.dll
extension=php_domxml.dll
extension=php_exif.dll
extension=php_fdf.dll
extension=php_filepro.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_hyperwave.dll
extension=php_iconv.dll
;extension=php_ifx.dll
extension=php_iisfunc.dll
extension=php_imap.dll
extension=php_interbase.dll
extension=php_java.dll
extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
extension=php_mssql.dll
extension=php_msql.dll
;extension=php_oci8.dll
extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pdf.dll
;extension=php_pgsql.dll
extension=php_printer.dll
extension=php_shmop.dll
extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
extension=php_w32api.dll
extension=php_xmlrpc.dll
extension=php_xslt.dll
extension=php_yaz.dll
extension=php_zip.dll
找到 [Session] 部分,我们这里只修改一个参数 session.save_path ,默认是 /tmp ,我们将其指向 C:/TEMP/ 目录(用斜杠或反斜杠来表示路径在 PHP 中是一致的),记得在 C 盘根目录下建立一个名为 temp 的文件夹:
session.save_path = “C:/temp/”
这个是设置会话的存放路径的。OK,php.ini 文件的配置告一段落,Ctrl+s 保存文件后关闭记事本。
[3]smarty+adodb+部分自定义类的php开发模式
来源: 互联网 发布时间: 2013-11-30
前几天把热网的后台基本弄好,腾出时间对工作总结了一下。
在设计模式上,我尝试着使用mvc模式的开发。用smarty控制显示,用case语句控制各种action,然后写好各种模块的class给action调用。这样做的确对代码的控制强了一点,比如在class.message.php中写上getAllMsg()函数,那么这个函数就可以被许多action调用。再配上分页类。在对数据的处理上还算灵活。
但是如上代码所示,在构造各种模块的class之外,因为各种个性化查询的存在,不可避免会在control中直接使用db类(当然,这些处理也可以放在写成类放在class中,但有点显得 臃肿和做作)。
但是光就方便而言,如果一段代码或者一个功能不被其他地方调用,完全可以把mc放在一起,保v单独就可以了,这需要对软件认真分析。下班了,回家楼。
在设计模式上,我尝试着使用mvc模式的开发。用smarty控制显示,用case语句控制各种action,然后写好各种模块的class给action调用。这样做的确对代码的控制强了一点,比如在class.message.php中写上getAllMsg()函数,那么这个函数就可以被许多action调用。再配上分页类。在对数据的处理上还算灵活。
代码如下:
$db=new Db;
$sql="select * from com_info,hr_info where hr_info.ci_id=com_info.id and {$cate} like '%{$content}%'";
$totalArr=$db->execute($sql);
$url="hr.php?op=searchHrInfoAction&cate={$cate}&content=".urlencode($content);
$totalItems=count($totalArr);
$currentPageNumber=(isset($_GET['page']))?$_GET['page']:1;
$pageNav=new PageNumber($currentPageNumber,$totalItems,3,3,$url);
$currentPageRs=$pageNav->getRsPerPage(&$totalArr);
$pageNavigation=$pageNav->getPageNumber();
$smarty->assign("pageNavigation",$pageNavigation);
$smarty->assign("hr",$currentPageRs);
$smarty->display("hr_get.htm");
而且这种方式对协同开发很有帮助,代码重复率也不是很高。 $sql="select * from com_info,hr_info where hr_info.ci_id=com_info.id and {$cate} like '%{$content}%'";
$totalArr=$db->execute($sql);
$url="hr.php?op=searchHrInfoAction&cate={$cate}&content=".urlencode($content);
$totalItems=count($totalArr);
$currentPageNumber=(isset($_GET['page']))?$_GET['page']:1;
$pageNav=new PageNumber($currentPageNumber,$totalItems,3,3,$url);
$currentPageRs=$pageNav->getRsPerPage(&$totalArr);
$pageNavigation=$pageNav->getPageNumber();
$smarty->assign("pageNavigation",$pageNavigation);
$smarty->assign("hr",$currentPageRs);
$smarty->display("hr_get.htm");
但是如上代码所示,在构造各种模块的class之外,因为各种个性化查询的存在,不可避免会在control中直接使用db类(当然,这些处理也可以放在写成类放在class中,但有点显得 臃肿和做作)。
但是光就方便而言,如果一段代码或者一个功能不被其他地方调用,完全可以把mc放在一起,保v单独就可以了,这需要对软件认真分析。下班了,回家楼。
最新技术文章: