可以这么说,php之所以强大就是因为数据库,当然还有其他的用处,php和mysql 数据库连接一起就成为了目前最好的组合 我们叫lamp,比如你注册的用户名 密码 都是存储在数据库的,当你输入的时候就和数据库的数据进行比对,等等。。。。
在成都做网站、成都网站建设过程中,需要针对客户的行业特点、产品特性、目标受众和市场情况进行定位分析,以确定网站的风格、色彩、版式、交互等方面的设计方向。成都创新互联公司还需要根据客户的需求进行功能模块的开发和设计,包括内容管理、前台展示、用户权限管理、数据统计和安全保护等功能。
通过PHP你可以轻松的连接到数据库 请求数据并将其显示在你的web站点中 甚至修改数据库中的数据 MySQL是一种很流行的数据库 并且在互联网中有许多有关PHP与MySQL的教程 MySQL是免费的 这一点也许就吸引了不少人 由于其广泛应用 我就不想在这里赘述MySQL的使用方法了 Oracle被大量在企业应用中采用 因此我们就利用Oracle来介绍PHP与数据库的连接 我们当然不会提及Oracle数据库的设计原理 原因是这已经超出了我们的讨论范围 PHP提供了两套函数与Oracle连接 分别是ORA_和OCI函数 其中ORA_函数略显陈旧 OCI函数更新据说更好一些 两者的使用语法几乎相差无几 你的PHP安装选项应该可以支持两者的使用 连接 ? if ($conn=Ora_Logon( user@TNSNAME password )){ echo SUCCESS ! Connected to database\n ;}else{echo Failed : ( Could not connect to database\n ;}Ora_Logoff($conn);phpinfo();?以上代码使用TNSNAME(在你的tnsnames ora文件中指明)定义的Oracle数据库名称 用户名称和密码连接数据库 在成功连接的基础上 ora_logon函数返回一个非零的连接ID并储存在变量$conn中 查询 假设与数据库已经连接就绪 下面我们就来实际的应用对数据库的查询 下面的代码演示了一个连接并查询的典型例子 function printoraerr($in_cur){// 检查Oracle是否出错// 如果存在错误则显示// 当指针被激活时每次请求Oracle后调用该函数if(ora_errorcode($in_cur))echo Oracle code ora_error($in_cur) \n ;return;}if (!($conn=ora_logon( user@TNSNAME password ))){echo Connection to database failed\n ;exit;}echo Connected as connection $conn \n ;echo Opening cursor \n ;$cursor=ora_open($conn); printoraerr($cursor);echo Opened cursor $cursor \n ;$qry= select user sysdate from dual ;echo Parsing the query $qry \n ;ora_parse($cursor $qry ); printoraerr($cursor);echo Query parsed \n ;echo Executing cursor \n ;ora_exec($cursor); printoraerr($cursor);echo Executed cursor \n ;echo Fetching cursor \n ;while(ora_fetch($cursor)){$user=ora_getcolumn($cursor ); printoraerr($cursor);$sysdate=ora_getcolumn($cursor ); printoraerr($cursor);echo row = $user $sysdate \n ;}echo Fetched all records \n ;echo Closing cursor \n ;ora_close($cursor);echo Closed cursor \n ;echo Logging off from oracle \n ;ora_logoff($conn);echo Logged off from oracle \n ;? 显示结果 以下代码演示了怎样查询数据库并将结果输出 function printoraerr($in_cur $conn){// 检查Oracle是否出错// 如果存在错误则显示// 当指针被激活时每次请求Oracle后调用该函数// If it encountered an error we exit immediatelyif(ora_errorcode($in_cur)){echo Oracle code ora_error($in_cur) n ;ora_logoff($conn);exit;}return;}function exequery($w_qry $conn){$cursor=ora_open($conn); printoraerr($cursor $conn);ora_parse($cursor $w_qry ); printoraerr($cursor $conn);ora_exec($cursor); printoraerr($cursor $conn);$numrows= ;$w_numcols=ora_numcols($cursor);// 显示头部echo \n ;for ($i= ;$i$w_numcols;$i++){$align=(ora_columntype($cursor $i)== NUMBER )? RIGHT : LEFT ;echo \t ora_columnname($cursor $i) \n ;}echo \n ;while(ora_fetch($cursor)){echo \n ;for ($i= ;$i$w_numcols;$i++){$align=(ora_columntype($cursor $i)== NUMBER )? RIGHT : LEFT ;if(ora_columntype($cursor $i)== LONG )echo ora_getcolumn($cursor $i) \n ;elseecho ora_getcolumn($cursor $i) \n ;printoraerr($cursor $conn);}$numrows++;echo \n ;}if ($numrows== )echo Query returned no records \n ;else{echo \n ;echo Count \n ;echo $numrows \n ;echo \n ;}echo \n ;ora_close($cursor);return;}// 主程序if(!($conn=ora_logon( user@SID password ))){echo Error: Cannot connect to database\n ;exit;}$qry= SELECTdeptno \ Dept\ empno \ Emp\ empnm \ Name\ salary \ Salary\ FROMemployeeORDER BY ;exequery($qry);ora_logoff($conn);? 基于HTTP的Oracle登录 将以下代码加在PHP页面代码之前以确认Oracle登录 注意你必须正确设定$ SID if(!isset($PHP_AUTH_USER)){Header( WWW authenticate: basic realm=\ $SID\ );Header( HTTP/ Unauthorized );$title= Login Instructions ;echo You are not authorized to enter the site\n ;exit;}else{if (!($conn=ora_logon( $PHP_AUTH_USER@$SID $PHP_AUTH_PW))){Header( WWW authenticate: basic realm=\ $SID\ );Header( HTTP/ Unauthorized );$title= Login Instructions ;echo You are not authorised to enter the site\n ;exit;}}? lishixinzhi/Article/program/Java/hx/201311/25865
php可以和很多数据库连接,都有内置函数,和哪一个数据库连接都有一个连接函数,但是都有一个特点,就是都需要服务器名,用户名,密码,连接成功就可以选择数据库,在执行SQL语句,找个PHP手册,里面各种对数据库操作的函数。
由于数据库很多,标准不统一,有机构用PHP写了一个统一的代码,例如adodb,使用的时候就只需要在连接的函数里面指出是那种数据库,减少很多不必要的麻烦。
现在使用PDO链接数据库的较多
连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。构造函数接收用于指定数据库源(所谓的 DSN)以及可能还包括用户名和密码(如果有的话)的参数。
连接到 MySQL
?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?
如果有任何连接错误,将抛出一个 PDOException 异常对象。如果想处理错误状态,可以捕获异常,或者选择留给通过 set_exception_handler() 设置的应用程序全局异常处理程序。
处理连接错误
?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh-query('SELECT * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e-getMessage() . "br/";
die();
}
?
如果应用程序不在 PDO 构造函数中捕获异常,zend 引擎采取的默认动作是结束脚本并显示一个回溯跟踪,此回溯跟踪可能泄漏完整的数据库连接细节,包括用户名和密码。因此有责任去显式(通过 catch 语句)或隐式(通过 set_exception_handler() )地捕获异常。
连接数据成功后,返回一个 PDO 类的实例给脚本,此连接在 PDO 对象的生存周期中保持活动。要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 NULL 值给对象变量。如果不明确地这么做,PHP 在脚本结束时会自动关闭连接。
关闭一个连接
?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// 在此使用连接
// 现在运行完成,在此关闭连接
$dbh = null;
?
很多 web 应用程序通过使用到数据库服务的持久连接获得好处。持久连接在脚本结束后不会被关闭,且被缓存,当另一个使用相同凭证的脚本连接请求时被重用。持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快。
数据库持久连接理解
原来的mysql_connect是非持久连接,所以即使你在当前脚本中没有使用mysql_close函数进行关闭连接。脚本执行完毕后,连接标识会自动释放掉。这里是什么完成自动上释放的操作呢?php跟java一样,有一个垃圾资源回收系统,对于不再用到的资源会自动进行内存回收。怎么实现的,不知道。
pconnect()是建立持久连接,特点是:当前脚本执行完毕后。该连接标识不会被释放掉。下一个脚本文件还可以使用。
持久连接的实际用处:假如一个php脚本文件,同时会有多个用户访问该页面。里面涉及到数据库查询操作。如果使用非持久连接的话,那么每个用户都会从新建立一个数据库连接。而持久连接,多个用户访问同一个文件的时候,可以共享一个数据库连接标识。这样减少了连接次数。
使用持久连接常常是将php作为apache的一个扩展的时候进行的。
mysql可通过两种方式通过php与web相连,一种通过php的mysql相关函数,另一种通过php的odbc相关函数
相关函数如下:
mysql函数
mysql_affected_rows: 得到 mysql 最后操作影响的列数目。
mysql_close: 关闭 mysql 伺服器连线。
mysql_connect: 开启 mysql 伺服器连线。
mysql_create_db: 建立一个 mysql 新资料库。
mysql_data_seek: 移动内部传回指标。
mysql_db_query: 送查询字串 (query) 到 mysql 资料库。
mysql_drop_db: 移除资料库。
mysql_errno: 传回错误讯息代码。
mysql_error: 传回错误讯息。
mysql_fetch_array: 传回阵列资料。
mysql_fetch_field: 取得栏位资讯。
mysql_fetch_lengths: 传回单列各栏资料最大长度。
mysql_fetch_object: 传回物件资料。
mysql_fetch_row: 传回单列的各栏位。
mysql_field_name: 传回指定栏位的名称。
mysql_field_seek: 设定指标到传回值的某栏位。
mysql_field_table: 获得目前栏位的资料表 (table) 名称。
mysql_field_type: 获得目前栏位的型态。
mysql_field_flags: 获得目前栏位的旗标。
mysql_field_len: 获得目前栏位的长度。
mysql_free_result: 释放传回占用记忆体。
mysql_insert_id: 传回最后一次使用 insert 指令的 id。
mysql_list_fields: 列出指定资料表的栏位 (field)。
mysql_list_dbs: 列出 mysql 伺服器可用的资料库 (database)。
mysql_list_tables: 列出指定资料库的资料表 (table)。
mysql_num_fields: 取得传回栏位的数目。
mysql_num_rows: 取得传回列的数目。
mysql_pconnect: 开启 mysql 伺服器长期连线。
mysql_query: 送出一个 query 字串。
mysql_result: 取得查询 (query) 的结果。
mysql_select_db: 选择一个资料库。
mysql_tablename: 取得资料表名称。
odbc函数
使用odbc函数需安装mysql odbc
odbc_autocommit: 开关自动更动功能。
odbc_binmode: 设定二进位资料处理方式。
odbc_close: 关闭 odbc 连结。
odbc_close_all: 关闭所有 odbc 连结。
odbc_commit: 更动 odbc 资料库。
odbc_connect: 连结至 odbc 资料库。
odbc_cursor: 取得游标名。
odbc_do: 执行 sql 指令。
odbc_exec: 执行 sql 指令。
odbc_execute: 执行预置 sql 指令。
odbc_fetch_into: 取得传回的指定列。
odbc_fetch_row: 取得传回一列。
odbc_field_name: 取得栏位名称。
odbc_field_type: 取得栏位资料形态。
odbc_field_len: 取得栏位资料长度。
odbc_free_result: 释出传回资料的记忆体。
odbc_longreadlen: 设定传回栏的最大值。
odbc_num_fields: 取得栏位数目。
odbc_pconnect: 长期连结至 odbc 资料库。
odbc_prepare: 预置 sql 指令。
odbc_num_rows: 取得传回列数目。
odbc_result: 取得传回资料。
odbc_result_all: 传回 html 表格资料。
odbc_rollback: 撤消当前交易。
odbc_setoption: 调整 odbc 设定。