仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1306|回复: 20
打印 上一主题 下一主题

[学习教程] PHP教程之利用PostgreSQL数据库做PHP开辟

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:56:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
毕业设计作品自己个人还是觉得比较满意的,尽管有些功能考虑的不全面,也没有很好的实现。   申明:上面内容更多是讲怎样装置情况的,实践开辟内容几近没有,你可以思索是不是浏览本文。
PostgreSQL数据库应当算是数据库界的启明星,个中一些功效乃至超越了Oracle等贸易数据库,在开源世界来说,可以说长短常不错的,乃至MySQL都跟它差很远。它撑持包含JDBC、ODBC、DBI等等数据库链接体例,根基上可以今朝一切盛行的编程言语停止交互,可以说是合适任何编程开辟者。
官方的引见内容或许更能申明成绩:http://www.pgsqldb.org/pgsqldoc-8.0c/preface.html
----------------------------------
作甚 PostgreSQL?
PostgreSQL是以加州大学伯克利分校盘算机系开辟的 POSTGRES,版本 4.2为基本的对象关系型数据库办理体系(ORDBMS)。 POSTGRES 抢先的很多概念只是在十分迟的时分才呈现在贸易数据库中。
PostgreSQL 是最后的伯克利的代码的一个开放源码的承继人。 它撑持大局部 SQL:2003 尺度而且供应了很多其他古代特征:
庞杂查询
外键
触发器
视图
事务完全性
多版本并发掌握
一样,PostgreSQL 可以用很多办法扩大,好比, 经由过程增添新的:
数据类型
函数
操作符
会萃函数
索引办法
进程言语
而且,由于允许证的天真,任何人都可以以任何目标无偿使用,修正,和分发 PostgreSQL, 不论是私用,商用,仍是学术研讨利用。
-------------------------------------
明天想测验考试一下PHP利用PostgreSQL做开辟的感到,因而就赶忙装一个吧。
一入手下手思索是在Windows装置最新的8.0.3版本,然而想一想,能够实践开辟平台更多的是在Unix/Linux下,因而就筹办在FreeBSD下做开辟,恰好昨天把FreeBSD5.4晋级了,赶忙ports一个回来。
cd /usr/ports/database/postgresql80-server
cat Makefile
一看,本来最新版是8.0.3,呵呵,正好呀,赶忙装。
make install
漫长守候的进程,它要去下载甚么gmake,还要下载postgresql-8.0.3.tar.bz2等文件,老半天赋装完。呵呵,很高兴,启动一下看看:
/usr/local/etc/rc.d/postgresql.sh start    (这个文件或许你的文件名不是如许)
晕,怎样失足了?归正逝世活就是启动不了,看来还到手工装置一下,先卸载失落吧:
cd /usr/ports/database/postgresql80-server
make deinstall
唉,把文件拷走吧:
cd /usr/ports/distfiles
mv ./postgresql-8.0.3.tar.bz2 /usr/local/src
解紧缩:
cd /usr/local/src
bunzip2 -d ./postgresql-8.0.3.tar.gz2
tar xvf ./postgresql-8.0.3.tar
解紧缩胜利:
cd ./postgresql-8.0.3
设置装备摆设文件,装置到咱们的老目次里:
./configure --prefix=/usr/local/pgsql
gmake
守候的进程,到后来,晕,怎样又失足?
提醒文件体系已满了。。。-_-#
我的是虚拟机,空间分派不公道,看看能不克不及给 /usr 加点空间。
去谷歌狂搜材料,只找到个 tunefs 的号令能处理这个成绩,看了半天也没分明,链接:
http://www.freebsd.org.cn/snap/doc/zh_CN.GB2312/books/handbook/configtuning-disk.html
想一想仍是算了,装到其他分区不就完了,看看空间情形:
%df
Filesystem  1K-blocks    Used  Avail Capacity  Mounted on
/dev/ad0s1a    507630   55060 411960    12%    /
devfs               1       1      0   100%    /dev
/dev/ad0s1e    507630   70072 396948    15%    /tmp
/dev/ad0s1f   2025982 1960440 -96536   105%    /usr
/dev/ad0s1d    507630   76340 390680    16%    /var
那就装到 /var 下吧,呵呵:
./configure --prefix=/var/pgsql
gmake
gmake install
进程顺遂,好,添加个运转pg的用户:
adduser
Username: postgres
Full name: PostgreSQL Server User
Uid (Leave empty for default):
Login group [postgres]:
Login group is postgres. Invite postgres into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash nologin) [sh]: /bin/csh
Home directory [/home/postgres]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]: yes
Lock out the account after creation? [no]:
Username   : postgres
Password   : <blank>
Full Name  : PostgreSQL Server User
Uid        : 1004
Class      :
Groups     : postgres
Home       : /home/postgres
Shell      : /bin/csh
Locked     : no
创立寄存数据库的目次:
mkdir /var/pgsql/data
把一切权给postgres用户:
chown postgres /var/pgsql/data
切换到用户postgres:
su - postgres
初始化数据库:
/var/pgsql/bin/initdb -D /var/pgsql/data
入手下手运转:
/var/pgsql/bin/postmaster -D /var/pgsql/data >logfile 2>&1 &
晕,怎样一堆毛病!!!
postmaster does not know where to find the server configuration file.
You must specify the --config-file or -D invocation option or set the PGDATA environment variable.
没有指定设置装备摆设文件,赶忙看看设置装备摆设文件再哪里?
find / -name "postgresql.conf"
/var/pgsql/data/postgresql.conf
哦,本来初始化数据库的时分就创立了设置装备摆设文件,赶忙写上:
./postmaster --config-file=/var/pgsql/data/postgresql.conf
晕,怎样又呈现新的毛病?
哦,本来没有设置装备摆设postgresql.conf的内容,赶忙把主要的设置装备摆设一下,设置装备摆设过的内容以下:
#---------------------------------
# FILE LOCATIONS
#---------------------------------

# The default values of these variables are driven from the -D command line
# switch or PGDATA environment variable, represented here as ConfigDir.
# data_directory = 'ConfigDir'          # use data in another directory
data_directory = '/var/pgsql/data'
# hba_file = 'ConfigDir/pg_hba.conf'    # the host-based authentication file
hba_file = '/var/pgsql/data/pg_hba.conf'
# ident_file = 'ConfigDir/pg_ident.conf'  # the IDENT configuration file
ident_file = '/var/pgsql/data/pg_ident.conf'
看出来了吧,就是指定了一个数据库文件目次,两个设置装备摆设文件的途径。
再启动:
./postmaster --config-file=/var/pgsql/data/postgresql.conf
LOG:  database system was shut down at 2005-07-15 01:20:24 CST
LOG:  checkpoint record is at 0/A38D20
LOG:  redo record is at 0/A38D20; undo record is at 0/0; shutdown TRUE
LOG:  next transaction ID: 678; next OID: 17231
LOG:  database system is ready
OK,胜利。好,看看能不克不及从我哪儿会见,先会见下默许的5432端口:
telnet 192.168.0.215 5432
怎样回事,没法毗连?赶忙Google一下,哦,本来是默许只是答应当地链接,要修正设置装备摆设文件:
vi /var/pgsql/data/postgresql.conf
修正以下内容:
#-----------------------------------
# CONNECTIONS AND AUTHENTICATION
#-----------------------------------

# - Connection Settings -

#listen_addresses = 'localhost' # what IP interface(s) to listen on;
                                # defaults to localhost, '*' = any
listen_addresses = '*'
#port = 5432
看到没有,就是把监听地址默许的localhost改成*,就是答应一切。再启动后telnet,呵呵,黑乎乎屏幕呈现,没有成绩。
哈哈,如今终究能用PHP来毗连了吧。
翻开php里的pgsql扩大,输入phpinfo()看看能不克不及撑持pgsql,一看,能了,赶忙写代码看看:
<?php
$link_str = "host=192.168.0.215 port=5432 dbname=test user=postgres password=postgres";
$link_id = pg_connect($link_str);
print_r($link_id);
?>
保留为pgsql.php,翻开阅读器:http://localhost/pgsq.php,哈哈,等着出链接ID吧!
哦,怎样回事?呈现毛病:
Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: no pg_hba.conf entry for host "192.168.0.216", user "postgres", database "test" in E:\Web\www\Temp\pgsql\pg.php on line 3
细心看,pg_hba.conf entry for host "192.168.0.216" ,哦,本来是这个设置装备摆设文件里没有答应我这个IP地址的会见,真是平安哪!
看来这个pg_hba.conf外面也必需设置才行,赶忙翻开:
vi /var/pgsql/data/pg_hba.conf
添加了一段IP地址,以下内容:
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
host    all         all         192.168.0.216        trust
# IPv6 local connections:
host    all         all         ::1/128               trust
看见没有,我添加了:
host    all         all         192.168.0.216       trust
假如你要答应一个段的IP,就能够添加成 192.168.0.1/24 甚么的。
再启动postgresql,我阅读器再次毗连,阅读器输入:
Resource id #1
^_^,胜利了吧!
赶忙下个windows下的办理东西来,去:http://www.pgadmin.org/ 下载了一个 pgAdmin III回来,装置完后,启动,添加办事器,胜利。用起来不错,跟MysqlCC有一拼,还撑持中文。
根基到这里就没有甚么了,呵呵,别的,说一个pgsql的特点,就是假如统一个用户在多个IP上上岸到办事器上,那末就只答应一个用户履行,操作,其他用户没法履行,不然呈现毛病,好比我在我的XP上利用pgAdmin上岸后,我又到办事器端去履行操作:
/var/pgsql/bin/createdb db1
createdb: database creation failed: ERROR:  source database "template1" is being accessed by other users
看见没有,失足了吧。
从下面各种来看,pgsql真是平安哪,把良多平安成绩都抹杀在摇篮,并且设置装备摆设也很丰厚,固然我装置进程庞杂了一点。其实多看看手册就分明的很了,只怪我不看手册。
晕,说了半天,没怎样说PHP怎样做开辟,呵呵,搭情况对照主要吧,至于开辟和pgsql自己的特征,渐渐去研讨。

附加点好器材:
官方保举的装置进程,然而实践中欠好使:
---------------------------------------------
./configure
gmake
su
gmake install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
---------------------------------------------
PostgreSQL中文手册:http://www.pgsqldb.org/twiki/bin/view/PgSQL/PgDocList
PostgreSQL中文服装论坛:http://bbs.pgsqldb.com
PostgreSQL官方网站:http://www.postgresql.org
Author: heiyeluren
WriteTime: 2005-7-15 下战书16:30
PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。注意不是“Hypertext Preprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。
柔情似水 该用户已被删除
沙发
发表于 2015-2-4 07:11:48 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
透明 该用户已被删除
板凳
发表于 2015-2-6 00:16:16 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
小魔女 该用户已被删除
地板
发表于 2015-2-6 00:48:52 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
灵魂腐蚀 该用户已被删除
5#
发表于 2015-2-9 19:50:51 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
再现理想 该用户已被删除
6#
发表于 2015-2-9 21:00:22 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
老尸 该用户已被删除
7#
发表于 2015-2-22 20:32:22 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
冷月葬花魂 该用户已被删除
8#
发表于 2015-3-7 02:22:57 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
金色的骷髅 该用户已被删除
9#
发表于 2015-3-14 03:05:17 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
山那边是海 该用户已被删除
10#
发表于 2015-3-20 23:47:20 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
乐观 该用户已被删除
11#
发表于 2015-3-27 16:10:42 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
只想知道 该用户已被删除
12#
发表于 2015-3-28 10:40:34 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
精灵巫婆 该用户已被删除
13#
发表于 2015-3-30 17:22:52 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
海妖 该用户已被删除
14#
 楼主| 发表于 2015-4-13 23:54:34 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
再见西城 该用户已被删除
15#
发表于 2015-4-21 15:13:21 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
小女巫 该用户已被删除
16#
发表于 2015-4-23 04:20:32 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
飘飘悠悠 该用户已被删除
17#
发表于 2015-4-28 01:16:00 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
愤怒的大鸟 该用户已被删除
18#
发表于 2015-5-4 08:40:10 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
若天明 该用户已被删除
19#
发表于 2015-5-7 14:55:02 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
兰色精灵 该用户已被删除
20#
发表于 2015-5-10 16:10:55 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 18:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表