php连接access数据库两种方法

1.使用ODBC 方式连接

<?PHP 
	//创建ADO连接 
	header("Content-type:text/html;charset=gb2312");
	// $dsn = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=". realpath("22222.mdb");  #access2003 
	$dsn = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=". realpath("global.asa"); #access2007
	$conn = odbc_connect($dsn,"","") or die("error");
	$sqlquery = "SELECT * FROM `表名`";
	$exec = odbc_exec($conn,$sqlquery);
	if (!$exec){exit("Error in SQL");}
	while($row=odbc_fetch_array($exec))
	{	
		echo "<br/>value:".$row['字段名'];
	}	
	odbc_close($conn);
?>

2.使用ADODB方式连接

    ps: PHP 5.4.5后,com/dotnet 模块已经成了单独的扩展,所以需要在PHP.ini中配置extension=php_com_dotnet.dll ,如果PHP VERSION<5.4.5 则不需要

<?PHP 
	//创建ADO连接
	header("Content-type:text/html;charset=gb2312");
	$conn = new COM("ADODB.Connection") or die ("ADO连接失败!"); 
	$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("global.asa"); 
	$conn->Open($connstr); 

	//创建记录集查询 
	$rs = @new COM("ADODB.RecordSet"); 
	$rs->Open("select * from productlist",$conn,1,3); 
	while (!$rs->EOF) {//遍历记录集        
		echo $rs->fields['p_name'] . '<br>';           
		$rs->MoveNext();//将指针指到下一条记录,否则出现死循环!        
	}        
	$rs->Close();//关闭以便释放内存 
?>


php 公共空间

公共空间
没有使用namespace 定义空间,当前空间为公共空间
注意:defin() 定义的常量不受命名空间限制


common.php

<?php
//公共空间
function getName(){
    return "common";
}
?>

test.php

<?php
//命名空间的第一个namespace 不能有任何代码
namespace sichuan;
include ("common.php")
function getName(){
    return "sichuan";
}
//当前文件有定义空间,引入的文件没有定义空间,则是公共空间
echo getName(); //输出sichuan 引入当前空间的函数
echo \getname();  //访问公共空间的函数 输出 common
?>

php 命名空间

版本(PHP 5 >= 5.3.0, PHP 7)

命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。 

在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题: 

  • 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 
  • 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

<?php

namespace chengdu;

function getName(){

    return "chengdu";

}

namespace nanchong;

function getName(){

    return "nanchong";

}

//示例

//非限定名称

echo getName();   //输出nanchong 找命令空间最近的函数,没有会报错

//限定名称

echo chengdu\getName()  //报错,相对定位找nanchong\chengdu\getName() 不存在

//完全限定名称

echo \chengdu\getName() // 绝对定位,输出chengdu  

//命名空间针对:函数、类名、常量三者其作用,在命名空间里面把这三种统称为元素

子空间使用

<?php
namespace sichuan\chengdu;
function getName(){
	return "chengdu";
}

namespace sichuan\nanchong;
function getName(){
	return "nanchong";
}

namespace sichuan\mianyang;
function getName(){
	return "mianyang";
}

echo getName(); //输出 mianyang
echo sichuan\nanchong\getName() ;   //报错,会找sichuan\mianyang\nanchong\getName()
echo \sichuan\nanchong\getName() ;   //输出nanchong 使用完全限定
?> 

别名和导入

namespace chengdu;
function getName(){
	return "chengdu";
}
class Person {
 static $name = "chengduren";

}

namespace nanchong;
function getName(){
	return "nanchong";
}

namespace mianyang;
function getName(){
	return "mianyang";
}
//第一种使用:
use chengdu\Person;  //引入chendu空间内的Person类元素
echo Person::$name;  //输出chengduren

//第二种使用:
use chengdu;
echo chengdu\getName()  //输出chengdu
echo chengdu\Person::$name; //输出chengduren

<?php
namespace sichuan\chengdu;
function getName1(){
	return "chengdu";
	
}
class Person {
	static $name = "chendduren";
	
}
namespace sichuan\nanchong;
function getName2(){
	return "nanchong";
	
}
class Person {
	static $name = "nanchongren";
	
}
//只引入空间
use sichuan\chengdu;
echo chengdu\getName1();
echo chengdu\Person::$name;

//引入空间和元素
use sichuan\chengdu\Person;
echo Person::$name;  //报错因为最近空间和引入的空间有相同的类

#修改
use sichuan\chengdu\Person as pon;
echo pon::$name;  //输出chendduren