php及数据库

PHP调用三种数据库的方法本文详细介绍了PHP如何调用MySQL、ODBC和ORACLE数据库。
MySQL是一款小巧精致的数据库服务器软件,非常适合中小型应用系统。
除了支持标准的ANSISQL语句之外,最重要的是MySQL还支持多平台。
在Unix/Linux系统上,MySQL支持多线程操作,可以达到非常好的性能。
与PHP和Apache一样,它是开源软件。
官方网站是:,提供Windows、Linux和Unix版本的源码下载。
请注意,MySQL访问函数需要适当的权限才能运行。
常用相关函数介绍如下:(1)integermysql_connect(主机、用户名、密码);该函数启动与指定主机上的MySQL数据库的连接。
如果数据库位于不同端口,请在主机名后添加冒号和端口号。
所有参数都是可选的,默认为本地主机、用户正在运行的脚本的名称,并且为空。
主机可以是IP地址或域名。
脚本执行结束时,连接会自动关闭,或者可以使用mysql_close提前关闭。
(2)booleanmysql_create_db(数据库名称);创建数据库。
请注意,必须使用具有创建数据库权限的帐户打开连接。
(3)booleanmysql_select_db(数据库名、连接数);选择默认数据库。
(4)integermysql_query(SQL语句,连接数);查询指定数据库。
如果选择了SQL语句,则返回结果编号,否则返回值可以被忽略。
如果失败,则返回false。
(5)arraymysql_fetch_array(结果数);获取下一行并返回一个数组。
它可以通过数字索引(第一个字段是索引0)访问,也可以通过字符串索引(即使用每个字段名称)访问。
如果已检索到最后一行,则返回false。
(6)mysql_fetch_row(结果数);返回一个矩阵,表示结果集中一行中的所有字段。
每次调用都会生成下一行并返回false,直到没有更多行为止。
每个字段值都通过从零开始的偏移量进行索引。
这是从查询中获取结果的最快方法。
(7)integermysql_num_rows(结果数);返回结果集中的行数。
(8)integermysql_num_fields(结果数)返回结果集中的字段数。
(9)integermysql_list_dbs();从服务器查询数据库列表。
它返回一个结果指针,可与mysql_fetch_row函数和类似函数一起使用。
(10)mysql_list_tables(数据库名);获取指向指定数据库的表单列表的结果指针。
任何从结果集中检索行的函数都可以使用此结果指针。
(11)mysql_close(连接数);关闭与数据库的连接。
连接必须由mysql_connect打开。
使用此功能并不是绝对必要的,因为所有非永久链接都将在脚本结束时自动关闭。
(12)mysql_pconnect(主机、用户名、密码);与mysql_connect完全相似,但创建“永久连接”。
连接一旦建立,即使mysql_close函数用于建立持久连接时如果发现持久连接已经存在,系统会直接返回连接号,而不会重新创建。
下面是调用MYSQL数据库并分页显示的示例。
<?$pagesize=5;//每页显示5条记录$host="localhost";$user="user";$password="psw";$dbname="book";//查询的数据库表名;//连接MySQL数据库mysql_connect("$host","$user","$password")ordie("连接MySQL数据库服务器失败!");$db=mysql_select_db("$dbname")ordie("无法建立与数据库的连接!");$sql="selectcount(*)astotalfrompagetest";//查询SQL语句生成记录条数$rst=mysql_query($sql)ordie("无法执行SQL语句:$sql!");//查询记录条数$row=mysql_fetch_array($rst)ordie("没有更多记录!");/获取一条记录$rowcount=$row["total"];//获取记录条数mysql_free_result($rst)ordie("无法释放结果资源!");//释放结果资源$pagecount=bcdiv($rowcount+$pagesize-1,$pagesize,0);//计算有多少页if(!isset($pageno)){$pageno=1;//如果没有设置page,如果没有,则默认为第1页显示}if($pageno<1 pageno=1;//如果pageno小于1,则设置为1}if($pageno>$pagecount){$pageno=$pagecount;//如果pageno大于大于总页数,设为最后一页}if($pageno>0){$href=eregi_replace("%2f","/",urlencode($PHP_SELF));//将$PHP_SELF转换为可在URL中使用的字符串,用于处理中文目录或中文文件名if($pageno>1){//显示echo"上一页";}else{echo"上一页";}for($i=1;$i<$pageno;$i++){echo"".$i."";}echo$pageno."";for($i++;$i<=$pagecount;$i++){echo"".$i."";}if($pageno<$pagecount){//显示下一页echo"下一页";}else{echo"下一页";}$offset=($pageno-1)*$pagesize;//计算本页第一条记录在整个表中的位置(第一条记录为0)$sql="select*frompagetestLIMIT$offset,$pagesize";//生成查询本页数据的SQL语句$rst=mysql_query($sql);//查询本页数据$num_fields=mysql_num_fields($rst);//获取字段总数$i=0;while($i<$num_fields){//获取获取所有字段的名称$fields[$i]=mysql_field_name($rst,$i);//获取第i+1个字段的名称$i++;}echo"";//开始输出表echo"";reset($fields);while(list(,$field_name)=each($fields)){//显示显示字段名echo"$field_name";}echo"";while($row=mysql_fetch_array($rst)){//显示本页数据echo"”;reset($fields);while(list(,$field_name)=each($fields)){//显示各个字段的值$field_value=$row[$field_name];if($field_value==""){echo"";}else{echo"$field_value";}}echo"";}echo"";//表输出结束mysql_free_result($rst)ordie("无法释放结果资源!");//释放结果资源}else{echo"当前有表中没有数据!";}mysql_close($server)ordie("无法与服务器断开连接!");//关闭连接并释放资源?>打开数据库连接(ODBC)已成为与数据库通信的行业标准。
PHP还提供了标准接口,使得PHP可以调用Access、SQLSERVER等数据库是:(1)integerodbc_connect(stringdsn,stringpassword)连接到ODBC数据库源名称(2)integerodbc_exec(integ.erconnection,stringquery)或odbc_do(integerconnection,stringquery)在连接上执行查询(3)booleanodbc_fetch_row(integerresult,整数)。
rrow)从结果集中检索一行数据。
如果为空,则返回下一个有效行。
(4)关闭数据库连接当事务打开时,返回错误并且不关闭连接。
最后看一个分页的例子:<?//设置每页显示的项目数$show_num=10;$spages=$pages;//避免这种情况。
$pages后来改了//定义连接$dsn="localhost";$userr="sa";$password="";//计算记录总数$rs_num="selectcount(*)asidfrombbswherezu='0'andlei='".$lei."'";$conn_id=odbc_connect($dsn,$user,$password);$rnum=odbc_exec($conn_id,$rs_num);while(odbc_fetch_row($rnum)){$total_rs=odbc_result($rnum,"id");//更改记录总数输入变量$total_rs}//计算相关的条目数page$nnn=$total_rs/$show_num;//计算总页数$hnnn=intval($nnn);//对总页数进行四舍五入$cnnnn=$nnn-$hnnn;//计算总页数所需页数switch($cnnn){case"0":$hnnn++;$nnn=$hnnn;//总页数分页符;default:$nnn=$hnnn;//总分页数;};if($nnn==0)$nnn++;//计算页面变化所需的条件$fore=$pages;$next=$pages;$fore-=1;$next+=1;if($fore>0){echo"首页";echo"上一页";};if($pages<$nnn){echo"下一页";echo"最后一页";};echo"总计".$nnn."页数";$query_string="SELECT*FROMtablewhereconditionorderbyyouwantedorder";$cur=odbc_exec($conn_id,$query_string);//确定循环开始$cnum=($pages-1)*$show_num;//计算当前记录光标的位置//清空循环forDisplay将光标绘制到if($cnum!=0){for($i=0;$i<=$cnum;odbc_fetch_row($cur));};$i=1;//显示记录while(odbc_fetch_row($cur)){echo;if($i==$show_num){//当页数达到时退出程序足够不从休息;};$i++;};//关闭连接odbc_close($conn_id);?>Oracle(Oracle)是世界上最流行的关系数据库。
它是大企业推动工业化的强大引擎。
我们先看一下相关函数:(1)integerora_logon(stringuser,stringpassword)启动与Oracle数据库服务器的连接。
(2)integerora_open(integerconnection)打开指定连接的游标。
(3)integerora_do(integerconnection,stringquery)在指定连接上执行查询。
PHP生成一个指示器,解析查询并执行它。
(4)integerora_parse(integercursor,stringquery)解析查询并准备执行。
(5)booleanora_exec(integercursor)执行先前由ora_parse函数解析的查询。
(6)booleanora_fetch(integercursor)该函数导致执行查询中的行被提取到指示器中。
这允许您调用ora_getcolumn函数。
(7)stringora_getcolumn(integercursor,integercolumn)返回当前值。
基于列零的数字索引。
(8)booleanora_logoff(integerconnection)断开与数据库服务器的连接。
下面是向ORACLE数据库插入数据的示例程序:<html><head><title>向ORACLE数据库插入数据</title></head><body>ID名称描述</form><?//先设置两个环境变量ORACLE_HOME,ORACLE_SIDputenv("ORACLE_HOME=/oracle/app/oracle/product/8.0.4");putenv("ORACLE_SID=ora8");//设置网页显示中文putenv("NLS_LANG=Simplified_Chinese.zhs16cgb231280");if($connection=ora_logon("scott","tiger")){//库表test有ID、name、description三个元素$sql='insertintotest(ID,名称,描述)值';$sql.='(''.$ID.'',''.$名称.'',''.$描述.'')';if($cursor=ora_do($connect,$sql)){print("插入完成!");}$query='select*fromtest';if($cursor=ora_do($connect,$query)){ora_fetch($cursor);$content0=ora_getcolumn($cursor,0);$content1=ora_getcolumn($cursor,1);$content2=ora_getcolumn($Cursor,2);print("$content0");print("$content1");print("$content2");ora_close($cursor);}ora_logoff($connection);}?></body></html>使用PHP,您可以轻松连接到数据库、请求数据、将其显示在您的网站上,甚至可以修改数据库中的数据。
MySQL是一个非常流行的数据库,互联网上有很多PHP和MySQL教程。
MySQL是免费的,这可能会吸引很多人。
由于MySQL的应用广泛,这里我不想详细介绍MySQL的使用。
Oracle经常用于企业应用程序。
因此,我们将使用Oracle来介绍PHP与数据库的连接。
我们当然不会提及Oracle数据库的设计原则,因为这超出了我们讨论的范围。
PHP提供了两套连接Oracle的函数,分别是ORA_和OCI函数。
ORA_函数有些过时了。
OCI功能更新应该会更好。
两者的使用语法几乎相同。
如前所述,您的PHP安装选项应该支持两者的使用。
有关在MicrosoftWindows平台上安装支持PHP3的Apache服务器的更多信息以及有关Oracle数据库的更多信息,请访问以下URL:。
4.1连接if($conn=Ora_Logon("user@TNSNAME","password")){echo"SUCCESS!Connectedtodatabase\n";}else{echo"失败:-(Couldnotconnecttodatabasee\n";}Ora_Logoff($conn);phpinfo();?>以上代码使用TNSNAME指定的Oracle数据库名称、用户名和密码(在tnsnames.ora文件中指定)连接到数据库之后成功连接基本上ora_logon函数返回一个非零连接ID存储在变量$conn中4.2查询让我们假设与数据库的连接已准备就绪。
以下代码显示了连接和查询的典型示例:/**连接到数据库并运行查询*。
/functionprintoraerr($in_cur){//检查Oracle是否出错//如果有错误就会显示//如果启用了指针,每次向Oracle发出请求后都会调用该函数if(ora_errorcode($in_cur))echo"Oraclecode-".ora_error($in_cur)."\n";return;}/**主程序*/if(!($conn=ora_logon("user@TNSNAME","密码"))){echo"连接数据库失败\n";exit;}echo"Connectedasconnection-$conn\n";echo"打开光标...\n";$cursor=ora_open($conn);printoraerr($cursor);echo"打开的游标-$cursor\n";$qry="selectuser,sysdatefromdual";echo"解析查询$qry...\n";ora_parse($cursor,$qry,0);printoraerr($cursor);echo"已解析查询\n";echo"正在执行游标...\n";ora_exec($cursor);printoraerr($cursor);echo"已执行游标\n";echo"正在获取游标...\n";while(ora_fetch($cursor)){$user=ora_getcolumn($cursor,0);printoraerr($cursor);$sysdate=ora_getcolumn($cursor,1);printoraerr($cursor);echo"row=$user,$sysdate\n";}echo"Fetchedallrecords\n";echo"Closingcursor...\n";ora_close($cursor);echo"Closedcursor\n";echo"Loggingofffromoracle...\n";ora_logoff($conn);echo"Loggedofffromoracle\n";?>(译者注:上面的代码段缺少注释,请参见PHP手册中的Oracle数据库函数部分发生了错误//如果有错误,则在指向时会显示//如果Pin已启用,每次向Oracle发出请求后都会调用此函数//Ifitencounteredanerror,weexitimmediatelyif(ora_errorcode($in_cur)){echo"Oraclecode-".ora_error($in_cur)."n";ora_logoff($conn);退出;}返回;}functionexequery($w_qry,$conn){$cursor=ora_open($conn);printoraerr($cursor,$conn);ora_parse($cursor,$w)_qry,0);printoraerr($cursor,$conn);ora_exec($cursor);printoraerr($cursor,$conn);$numrows=0;$w_numcols=ora_numcols($cursor);//显示头echo"\n";for($i=0;$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=0;$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==0)echo"查询返回无记录\n";else{echo"\n";echo"计数\n";echo"$numrows\n";echo"\n";}echo"\n";ora_close($cursor);return;}//主程序if(!($conn=ora_logon("用户@SID","密码"))){echo"错误:无法连接到数据库\n";exit;}$qry="SELECTdeptno\"部门\",empno\"Emp\“,empnm\“姓名\”,工资\“Salary\"FROMemployeeORDERBY1,2";exequery($qry);ora_logoff($conn);?>(译者注:以上代码段不包含注释,参见PHP手册中Oracle数据库函数部分)4.4基于HTTP的Oracle登录在PHP页面代码之前添加以下代码以确认Oracle登录,注意需要正确设置$SID。
if(!isset($PHP_AUTH_USER)){Header("WWW-authenticate:basicrealm=\"$SID\"");Header("HTTP/1.0401Unauthorized");$title="LoginInstructions";echo"他们不是有权进入网站\n";exit;}else{if(!($conn=ora_登录("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW))){标题("WWW-authenticate:basicrealm=\"$SID\"");标题("HTTP/1.0401Unauthorized");$title="LoginInstructions";echo"您无权进入该网站\n";exit;}}?>

php怎样查询数据库的数据

查询数据也是PHP中常用的,今天给大家介绍一下如何使用PHP查询mysql数据库中的数据。
安装xampp,启动Apache和mysql,然后点击“admin”进入mysql管理界面。
如图,在mysql数据库服务器中新建数据库和数据表,后面会用到。
如图所示,我创建了一个新的数据库和信息数据表。
仪表板中的数据如图所示,有id和name字段以及对应的数据。
然后连接Apache和mysql服务器。
使用mysql_connect()进行连接。
注意默认的用户名和密码。
如果您没有修改它们,也可以使用默认名称。
然后选择mysql服务器中的student数据库并通过mysql_select_db()选择它。
然后,使用mysql_query将查询语句发送到选定的数据库,并将查询结果保存在result变量中。
然后开始使用mysql_fectt_array将结果保存到一行,然后将结果输出到循环中。
注意[]中的名称必须与数据库中的字段名称相同,否则会出错。
最后,您还需要关闭数据库服务器连接。
然后我们运行PHP文件,然后数据库数据就可以在浏览器中显示出来了。
然后我们将数据添加到数据表中。
然后刷新界面就可以看到所有的数据都显示出来了。

如何实现PHP查询数据库,信息匹配成功,跳转页面?

<?php$localhost='localhost';//基本本地主机为localhost$dbname='dbname';//数据库名称$user='user';//用户名$pw='pw';//密码$pdo=newPDO("mysql:host=".$localhost.";dbname=".$dbname."",$user,$pw->query('设置名称utf8');$用户名=$_POST['用户名'];$userpassword=$_POST['用户密码'];$sql='从`userinf`中选择用户密码,其中`用户名`="'.$用户名.'"';$row=$pdo->query($sql)->fetch();//查询数据库if($userpassword==$row['userpassword']){@header("Location:http://URL");//配对成功,跳转退出其他('Na抱歉,你的密码不是Yes');}/*就是这么简单,但是一般的用户密码验证不是这样过滤的*/?><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><顶部><title>验证用户输入</title></head><body>用户名:|密码:|</form></body></html>