php二维数组应用举例-根据条件取数据,假如数组$point_arr(如下),请取出 user_id = 3的那一行数组。
<?php
//数组
$point_arr = array(
array("id"=>1,"id"=>1,"point"=>2),
array("id"=>2,"id"=>3,"point"=>2),
array("id"=>3,"id"=>3,"point"=>2),
array("id"=>4,"id"=>3,"point"=>2),
);
for($i = 0;$i <sizeof($point_arr);$i ){
if($point_arr[$i]["id"] == 3){
//$new是个新的数组用于接收user_id=3的。
$new[] = $point_arr[$i];
}
}
//输出新的数组。
for($i = 0;$i <sizeof($i);$i ){
print_r($new[$i]);
echo "<br />";
}
?>
php连接mysql,系统需要启用php_mssql的扩展,且在PHP.ini中的配置中,将;extension=php_mssql.dll前面的;去掉。
下面来看具体的例子。
1、连接MSSQL
//测试连接
if($conn)
{
echo "连接成功";
}
2、选择要连接的数据库
3、执行查询
或者直接执行update,insert等语句,可以不用为返回结果赋值
mssql_query("update tbname set username='niunv' where id=1");
4、获取记录集行数
5、获取记录集
{
$id = $row[0];//获取ID字段值
$username = $row[1];//获取username字段值
}
6、获取新增记录的ID
将id字段设置为IDENTITY字段,执行insert语句以后,就会产生一个 @@IDENTITY 全局变量值,查询出来就是最后一条新增记录的ID了.
$rs = mssql_query("select @@IDENTITY as id",$conn);
if($row=mssql_fetch_array($rs))
{
echo $row[0];
}
7、释放记录集 //更多
8.关闭连接
注:用PHP操作MSSQL比在ASP连接MYSQL要简单,所以,当需要MSSQL与MYSQL并存时,用PHP连接MSSQL来操作MYSQL与MSSQL并存比较简单好用.如果是ASP连接MYSQL,需要安装一个MYSQL驱动,默认windows的ODBC没有安装,很遗憾...
1.在web服务器上至少安装了mssql的客户端
2.打开php.ini把;extension=php_mssql.dll 前面的分号去掉
有必要话:需要制定extension_dir
3.推荐使用 php<=4.0.9 <=5.0.3目前 我还没有连接成功过4.010和 5.0.3
4.数据库的 连接分页可以 到 phpe.net上获取到相应的class
下面是我根据那里 修改的 一个class
/**
*mssql 数据库连接类
**/
class SQL{
var $server;
var $userName;
var $passWord;
var $dataBase;
var $linkID = 0;
var $queryResult;
var $lastInsertID;
var $pageNum = 0;//分页用---共有几条数据
var $ER;
/**
*构造函数
**/
function SQL($Server='',$UserName='',$PassWord='',$DataBase=''){
$this->server = $Server;
$this->userName = $UserName;
$this->passWord = $PassWord;
$this->dataBase = $DataBase;
}
/**
*数据库连接
**/
function db_connect(){
$this->linkID = mssql_pconnect($this->server,$this->userName,$this->passWord);
if(!$this->linkID){
$this->ER = "db_connect($this->server,$this->userName,$this->passWord) error";
return 0;
}
if (!mssql_select_db($this->dataBase,$this->linkID)) {
$this->ER = "mssql_select_db($this->dataBase,$this->lastInsertID) error";
return 0;
}
return $this->linkID;
}
/**public
* function: Check the database, if exist then select
* exist: return 1
* not exist: return 0
*/
function selectDatabase(){
if(mssql_select_db($this->dataBase))
return 1;
else
return 0;
}
/**
*数据操作
**/
function query($Str){
if ($this->linkID == 0) {
$this->ER = "数据库还没有连接!!";
}
$this->queryResult = mssql_query($Str);
//$this->queryResult = mssql_query($Str,$this->linkID);
if (!$this->queryResult) {
$this->ER = "$Str.没有操作成功,query error!!";
return 0;//****************对于php 4.3.9以上版本的错误用1
}
return $this->queryResult;
}
/**
*数据获取
**/
function fetch_array($result){
if($result != "") $this->queryResult = $result;
$rec =mssql_fetch_array($this->queryResult);
if(is_array($rec)){
return $rec;
}
//$this->ER = "没有获取数据!";
return 0;
}
/**public
* function: Free the Query Result
* success return 1
* failed: return 0
*/
function freeResult($result=""){
if($result != "") $this->queryResult = $result;
return mssql_free_result($this->queryResult);
}
/**
*获取影响的的行数
*获取操作过的行数
**/
function num_rows($result=""){
if ($result != "") {
$this->queryResult = $result;
$row = mssql_num_rows($this->queryResult);
return $row;
}
}
/**
*获取查询结果---多个
**/
function result_ar($str=''){
if (empty($str)) {
return 0;
}
$back = array();
$this->queryResult = $this->query($str);
while ($row = $this->fetch_array($this->queryResult)) {
$back[] = $row;
}
return $back;
}
/**
*数据库信息分页
*$Result 数据库操作
*str ==sql语句
*page ==第几页
*showNum ==显示几页
*/
function page($Str,$Page=0,$ShowNum=5){
$back = array();//返回数据
$maxNum = 0;
if ($Str == "") {
$this->ER = "没有数据";
return 0;
}
$this->queryResult = $this->query($Str);
if($this->queryResult){
if($Page==""){
$nopa=0;
}else{
$nopa = ($Page-1)*$ShowNum;
if ($nopa<0) {
$nopa = 0;
}
}
$maxNum=$this->num_rows($this->queryResult);
$k=0;
$i=0;
$dd=$this->fetch_array($this->queryResult);
while($dd&&$nopa<=$maxNum&&$i<$ShowNum){
if($nopa >= $maxNum) $nopa = $maxNum;
mssql_data_seek($this->queryResult,$nopa);
$row=$this->fetch_array($this->queryResult);
$nopa++;
$i++;
$back[] = $row;
if ($nopa >=$maxNum) {
break;
}
}
}
$this->pageNum = $maxNum;
return $back;
}
/**
*分页的html页码
*/
function page_html($DataNum=0,$Page=1,$ShowNum=3,$web,$Post=''){
if ($DataNum == 0) {
$back = "没有要查询的数据";
}else {
if ($ShowNum<=0) {
$ShowNum = 3;
}
if ($Page<=0) {
$Page = 1;
}
if (empty($web)) {
$web = "#";
}
$pageNum = ceil($DataNum/$ShowNum);
if ($Page <= 1) {
$top = "首页<<";
}else {
$top = "<a href='".$web."?page=0&".$Post."' target='_self'>首页<< </a>";
}
if ($Page !==1) {
$upPage = "<a href='".$web."?page=".($Page-1)."&".$Post."' target='_self'>上一页</a>";
}else {
$upPage = "上一页";
}
if ($Page < $pageNum) {
$downPage = "<a href='".$web."?page=".($Page+1)."&".$Post."' target='_self'>下一页</a>";
}else {
$downPage = "下一页";
}
if ($Page == $pageNum) {
$foot = ">>尾页";
}else {
$foot = "<a href='".$web."?page=".$pageNum."&".$Post."' target='_self'> >>尾页</a>";
}
$back = <<<EOT
共 $pageNum 页
第 $Page/$pageNum 页 $top $upPage $downPage $foot
EOT;
}
return $back;
}
}//end class
?>
安装php模块,可以用:rpm包,也可以用源码安装。
其实,安装扩展模块可以使用php 自带的模块安装命令,即可实现快速自动安装php扩展模块了。
下载,编译,安装一步到位的方法。
1、安装php 模块安装命令。
wget http://pear.php.net/go-pear
php go_pear
[root@localhost ~]# php go-pear
Welcome to go-pear!
Go-pear will install the 'pear' command and all the files needed by
it. This command is your tool for PEAR installation and maintenance.
Go-pear also lets you download and install the following optional PEAR
packages: PEAR_Frontend_Web-beta, PEAR_Frontend_Gtk2, MDB2.
If you wish to abort, press Control-C now, or press Enter to continue:
HTTP proxy (http://user:password@proxy.myhost.com:port), or Enter for none::
Below is a suggested file layout for your new PEAR installation. To
change individual locations, type the number in front of the
directory. Type 'all' to change all of them or simply press Enter to
accept these locations.
1. Installation prefix ($prefix) : /root
2. Temporary files directory : $prefix/temp
3. Binaries directory : $prefix/bin
4. PHP code directory ($php_dir) : $prefix/PEAR
5. Documentation base directory : $php_dir/docs
6. Data base directory : $php_dir/data
7. Tests base directory : $php_dir/tests
1-7, 'all' or Enter to continue:
可以选择:1 设置你安装路径。
接下来,一路回车就可以完成安装了。
现在,你可以直接运行:pecl pear 2个命令进行安装。
什么是:pear pecl 呢?
Pear、Pecl都是PHP扩展模块的集合。
扩展PHP有两种方法:
一种是用纯粹的PHP代码写函数和类。
Pear就是这样一个项目。PEAR是PHP的官方开源类库(PHP Extension and Application Repository的缩写)。
Pear在英文中是梨子的意思。PEAR将PHP程序开发过程中常用的功能编写成类库,涵盖了页面呈面、数据库访问、文件操作、
数据结构、缓存操作、网络协议等许多方面,用户可以很方便地使用。它是一个PHP扩展及应用的一个代码仓库,
简单地说,PEAR就是PHP的 cpan。其主页是pear.php.net。
另外一种是用c或者c++编写外部模块加载至php中。
Pecl(The PHP Extension Community Library)就是干这个事的,PHP的标准扩展,可以补充实际开发中所需的功能。
所有的扩展都需要安装,在Windows下面以DLL的形式出现;在 linux下面需要单独进行编译,
它的表现形式为根据PHP官方的标准用C语言写成,尽管源码开放但是一般人无法随意更改源码。
其主页是 pecl.php.net。 最直接的表述:Pear是PHP的上层扩展,Pecl是PHP的底层扩展。
这两种方法其实都是为特定的应用提供现成的函数或者类,本质上来说都是一样的。
知道上面 2个区别,对于我们安装很方便理解了。我们一般so文件扩展,需要运行:pecl
2.下面,安装个:pecl_http扩展试下
Retrieving data...0%
Matched packages, channel pecl.php.net:
=======================================
Package Stable/(Latest) Local
pecl_http 1.7.0 (stable) Extended HTTP Support
You have new mail in /var/spool/mail/root
[root@localhost ~]# pecl install pecl_http
downloading pecl_http-1.7.0.tgz ...
Starting to download pecl_http-1.7.0.tgz (173,979 bytes)
.....................................done: 173,979 bytes
71 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
whether to enable cURL HTTP requests; specify libcurl directory [yes] :
先运行:search 命令模糊搜索,然后可以用,pecl install pecl_http .
一路回车,一会儿 在:
[root@localhost ~]# ll /usr/lib/php/modules/http.so
-rw-r--r-- 1 root root 1274476 06-26 08:56 /usr/lib/php/modules/http.so
存在自己的模块了。(不同系统,位置可能不同),上一步安装完后,会告诉模块所在地址。
3.配制php.ini
加入:
extension=http.so
就ok了。
然后,可以通过php -m 查看下。
[PHP Modules]
bz2
calendar
ctype
curl
date
dbase
dom
eAccelerator
exif
filter
ftp
gd
gettext
gmp
hash
http
已经安装成功。
后记:
其它也有源码安装,上pecl.php.net 找到对应源码包解压。
可以通过:pecl install 源码文件。