澳门新葡亰平台游戏网站PHP4 与 MySQL 数据库操作函数详解

I说PHP就务须提MySQL,而要讲MySQL,那么PHP也是任其自流要被聊起。PHP的飞速崛起,离不开MySQL,而MySQL的分布应用,也与PHP骨肉相连。上面详细剖判PHP4中与MySQL相关操作的函数:1.
总是数据库服务器(database server卡塔尔的函数:(1卡塔尔国.mysql_connect()格式:int
mysql_connect(string [hostname] [ort],string [username],string
[password]State of Qatar;参数中的port参数表示数据库服务器的端口号,平时用它的暗中认可端口号即可了。假使不填任何参数,则私下认可的hostname为localhost,username为root,password为空。函数施行成功,重临一个int
类型的连接号(link_identifier卡塔尔国,试行倒闭,重回false值。例子:$connect =
mysql_connect(“localhost”,”user”,”password”);if($connect) echo “Connect
Successed!”; //连接成功,展现Connect Successed!else echo “Connect
Failed!”; //连接退步,呈现Connect
Failed!?在上例中,如mysql_connect(卡塔尔国推行停业,将显得系统的失实提醒,而后继续往下实施。那,该怎么屏蔽这个系统的荒谬指示并在波折后终止程序?在MySQL中,允许在数据库函数在此之前增进@符号,屏蔽系统的大错特错提示,同有时间用die(State of Qatar函数给出更易掌握的错误提醒,然后die(卡塔尔(قطر‎函数将自行退出程序。上例能够改为:$connect
= @mysql_connect(“localhost”,”user”,”password”) or die (“Unable to
connect database server!”);?如mysql_connect(卡塔尔实行停业,将呈现 Unable to
connect database server!后,退出程序。(2卡塔尔.mysql_pconnect()格式:int
mysql_pconnect(string [hostname] [ort],string [username],string
[password]State of Qatar;此函数与(1卡塔尔(قطر‎的mysql_connect(卡塔尔国基本相近,分歧在于:———
当数据库操作截止之后
,由(1卡塔尔(قطر‎的mysql_connect(卡塔尔(قطر‎创立的接连将自动关闭,而(2卡塔尔的mysql_pconnect(卡塔尔国创建的连年将持续存在,是一种牢固漫长的总是。———
在(2卡塔尔国的mysql_pconnect(卡塔尔,每便三番五次前,都会检讨是还是不是有应用相通的hostname,use,password的总是,假设有,则间接运用那么些连接号。———
(1卡塔尔国的mysql_connect(卡塔尔国创设的连续几日能够用mysql_close()关闭,而(2)的mysql_pconnect()不能用mysql_close(卡塔尔(قطر‎来关闭。2.关门数据库连接函数(1个卡塔尔:mysql_close()格式:int
mysql_close(int
link_identifier);关闭由mysql_connect(卡塔尔函数构建的连年,推行成功,再次回到ture值,退步则赶回false值。例子如下:$connect
= @mysql_connect(“hostname”,”user”,”password”) or die(“Unable to
connect database server!”);$close = @mysql_close($connect) or die
(“Unable to close database server
connect!”);?注:mysql_close(卡塔尔无法关闭由mysql_pconnect(State of Qatar函数建设布局的连年。3.选项数据库函数(1个卡塔尔:mysql_select_db()格式:int
mysql_select_db(string database name , int
link_identifier卡塔尔;接纳内定的database name
,成功,重返1个真值,战败,则赶回1个False值例子1:$select =
mysql_select_db(/’forum/’ , $connect);if($select){echo “connect db
forum successed!”;}else{echo “connect db forum failed!”;}?例子2:$select
= mysql_select_db(“forum”,$connect) or die(“Can not connect this
DB!”State of Qatar;?注:此函数相当于在MySQL中的USE语句:如 USE
forum4.SQL查询函数(2个卡塔尔国:1、mysql_query()格式:int mysql_query(string
sqlquery , int
link_identifier卡塔尔国;向劳动器发一段正式SQL语句央求。假如败北,则赶回一False值。例子:$connect
= mysql_connect($hostname,$user,$pwd);$select =
mysql_select_db($dbname,$connect);$query = mysql_query($sql ,
$connect);if($query) echo “Successed !”;else echo “Failed
!”;?此函数应当要与mysql_select_db(卡塔尔国函数同盟使用,单独接收它就一向不意义了!2、mysql_db_query()格式:int
mysql_db_query(string database , string sqlquery , int
link_identifier卡塔尔(قطر‎;在那函数中必需钦命数据库名database和SQL语句sqlquery,如战败则赶回False。例子:$connect
= mysql_connect($hostname , $user , $pwd);$query =
mysql_db_query($dbname , $sql , $connect);if($query) echo “Successed
!”;else echo “Failed
!”;?mysql_db_query()与mysql_query(卡塔尔(قطر‎的不同就在于后面一个能够绝不选取mysql_select_db(卡塔尔国来抉择数据库database,而在试行SQL语句的还要,进行分选数据库。
5.数据库记录操作函数(5个卡塔尔国:1、mysql_fetch_array()格式:array
mysql_fetch_array(int
queryState of Qatar;试行成功,重临1个数组,该数组保存有下一条记下的值,如进行倒闭,则赶回False值。重返的数组不仅能用下标来代表,也得以用字段名来表示。例子:$query
= mysql_query($sql , $connect);while($arrary =
mysql_fetch_array($query)){echo $array[column1].” |
“.$array[column2];//echo $array[0].” | “.$array[1];}?Note :
数组的下标是从0起先的!2、mysql_fetch_row()格式:array =
mysql_fetch_row(int
query);与1的mysql_fetch_array(卡塔尔函数效用基本雷同。不同在于mysql_fetch_row(卡塔尔国只好以数组下标来代表。成功再次回到1个数组,战败重回False值。例子:$query
= mysql_query($sql , $connect);while($row =
mysql_fetch_row($query)){echo $row[0] . ” | ” . $row[1] . ”
“;}?Note :
mysql_fetch_row(卡塔尔(قطر‎函数只好用数组下标来代表,并从0开端。另:mysql_fetch_row()比mysql_fetch_array(卡塔尔国推行进程快,并且都是对下一行数据进行读取。3、mysql_result()格式:int
mysql_result(int query , int row , string
filedname);在mysql_result(卡塔尔国中,参数row必需从0最初,参数filedname必需是实际的字段名,不能够用下标来代表。施行成功,重临由数据库中抽取的字段的数值,失利则赶回False值。例子:$query
= mysql_query($sql , $connect);echo mysql_result($query , 0 ,
“column1″).” “;echo mysql_result($query , 1, “column1″).” “;echo
mysql_result($query , 2, “column1″卡塔尔.” “;?Note :
此函数功能少,但使用方便。4、mysql_fetch_object()格式: object
mysql_fetch_object(int
query卡塔尔能对点名的字段进行巡回读取,实施成功,将以对象object的情势重返数值,退步则赶回False值。例子:$query
= mysql_query($sql , $connect);while($object =
mysql_fetch_object($query)){echo $object-column1 . ” “;echo
$object-column2 . ” “;echo $object-column3 . ” “;}?Note :
mysql_fetch_object(卡塔尔(قطر‎函数试行成功后回来的是1个对象object
!操作如下:$object-字段名5、mysql_data_seek()格式:int
mysql_data_seek(int row , int
query卡塔尔国;移动游标到钦点的行(row_number卡塔尔国实行成功,再次来到真值,失败,重回False值。此函数能够与mysql_fetch_array()或mysql_fetch_row(卡塔尔国协作使用,即在动用mysql_data_seek(卡塔尔函数之后,就足以用mysql_fetch_array()或mysql_fetch_row(State of Qatar函数来显示钦点的行了。例子:$query
= mysql_query($sql , $connect);$seek = mysql_data_seek($query ,
2);$arrary = mysql_fetch_array($query);echo $array[column1].” “;echo
$array[column2].”
“;?6.数据库级database的操作函数(2个卡塔尔:1、mysql_create_db()格式:int
mysql_create_db(string database name , int
link_identifier卡塔尔(قطر‎;通进程序来确立1个数据库database,当然你也能够用mysql_query()或者mysql_db_query(卡塔尔函数来树立或删除database但大家得以用这么些函数更为有利地创立1个database。成功再次来到1个真值,失败,则赶回1个false。例子:$connect
= mysql_connect(“$hostname”,”$user”,”$pwd”);$create =
mysql_create_db(“dbtest” , $connect);if($create) echo “create database
dbtest successed!”;else echo “create database dbtest
failed!”;?2、mysql_drop_db()格式:int mysql_drop_db(string database
name , int
link_identifier卡塔尔;通进度序来删除1个数据库database。但我们可以用那个函数更为有利地删除1个database。成功重返1个真值,失败,则赶回1个false。例子:$connect
= mysql_connect(“$hostname”,”$user”,”$pwd”);$create =
mysql_drop_db(“dbtest” , $connect);if($create) echo “drop database
dbtest successed!”;else echo “drop database dbtest failed!”;?Note :
如用mysql_query()或mysql_db_query(卡塔尔(قطر‎,则SQL语句应该为:(1卡塔尔create
database dbtest(2State of Qatardrop database dbtest 7卡塔尔(قطر‎数据库音讯函数:1、mysql_fetch_field()格式:object
mysql_fetch_field(int query , int
[field_offset]State of Qatar;重返1个对象,即一哈希表,下标有:table : 表名name :
字段名max_length : 该字段的最大尺寸not_null : 字段为not
null则赶回1,不然再次回到0primary_key : 字段为primary
key则赶回1,不然重返0unique_key : 字段为unique
key则赶回1,不然重临0multiple_key : 字段为非unique
key则赶回1,不然重临0numeric : 字段为numeric则赶回1,不然再次回到0blob :
字段为blob则赶回1,不然重回0type : 字段的连串unsigned :
字段为unsigned则赶回1,否则再次回到0zerofill : 字段为zero
filled则赶回1,不然再次回到0引用格式为:对象名-下标名使用此函数能够获得表名、字段名、类型…….例子:$query
= mysql_query($sql , $connect);while($object =
mysql_fetch_field($query)){echo “table name : “.$object-table.” “;echo
“field name : “.$object-name.” “;echo “primary key :
“.$object-primary_key.” “;echo “not null : “.$object-not_null.” “;echo
“field type : “.$object-type.” “;echo “field max length :
“.$object-max_length.” “;}?Note :
哈希表的是从0坐标开端的,即首先个字段为哈希表中的0项。纵然大家想直接获取哈希表的第三项即第八个字段的音讯,可用如下格式:$query
= mysql_query($sql , $connect);$object = mysql_fetch_field($query ,
2);echo “table name : “.$object-table.” “;echo “field name :
“.$object-name.” “;echo “primary key : “.$object-primary_key.” “;echo
“not null : “.$object-not_null.” “;echo “field type : “.$object-type.”
“;echo “field max length : “.$object-max_length.”
“;?其实这也得以经过下边那些函数来达到平等的指标。2、mysql_field_seek()格式:int
mysql_field_seek(int $query , int
field_offset卡塔尔(قطر‎;将游标移到钦命的字段上。例子:$query = mysql_query($sql
, $connect);$seek = mysql_field_seek($query , 2);$object =
mysql_fetch_field($query);echo “table name : “.$object-table.” “;echo
“field name : “.$object-name.” “;echo “primary key :
“.$object-primary_key.” “;echo “not null : “.$object-not_null.” “;echo
“field type : “.$object-type.” “;echo “field max length :
“.$object-max_length.” “;?那样也完成与上例相似的渴求。8卡塔尔国取数据库名和表名:1、mysql_list_dbs()格式: int mysql_list_dbs(int
link_identifier卡塔尔;拿到富有可用的数据库名(database name卡塔尔国。例子:$connect
= mysql_connect($host , $usr ,$pwd);$dbs =
mysql_list_dbs($connect);$rows = mysql_num_rows($dbs);echo “database
total : “.$rows;$i = 0;while($i$rows){$db_name[$i] =
mysql_tablename($dbs , $i);echo
$db_name[$i];$i++;}?就可以依次彰显出MySQL中全部的数据库名字。Note :
相当于MySQL中的 show databases命令2、mysql_list_tables()格式:int
mysql_list_tables(string database
name卡塔尔;显示该数据库下具备的表的名字Table name。例子:$connect =
mysql_connect($host , $usr , $pwd);$tables =
mysql_list_tables(“mysql”);$rows = mysql_num_rows($tables);echo
“Table total : “.$rows;$i = 0;while($i$rows){$table_name[$i] =
mysql_tablename($tables , $i);echo
$table_name[$i];$i++;}?就能够依次显示出mysql下有所的表的名字Note :
也正是MySQL中的 show tables命令(先要用 use mysql命令选中1个数据库卡塔尔

先来操作函数片段,分布的MySQL
函数方法,但随着PHP5的开垦进取,有个别函数使用的须要深化了,有个别则将抛弃不用,某些则参数必填…

 

===============================================================================================================================

说PHP就非得提MySQL,而要讲MySQL,那么PHP也是一定要被谈起。PHP的相当的慢崛起,离不开MySQL,而MySQL的分布应用,也与PHP一脉相连。
 

   
上边详细深入分析PHP4中与MySQL相关操作的函数(共三12个,初叶都为mysql_):
 

    <1>. 连接数据库服务器(database
server卡塔尔(قطر‎的函数(2个):   

  (1).mysql_connect()   格式:int
mysql_connect(string [hostname] [:port],string [username],string
[password]);     

参数中的port参数表示数据库服务器的端口号,平常用它的暗中认可端口号就可以了。
 
假使不填任何参数,则暗中认可的hostname为localhost,username为root,password为空。
 

    函数推行成功,再次来到二个int
类型的连接号(link_identifier卡塔尔(قطر‎,实行停业,重返false值。      例子:

     <?php

     $connect =
mysql_connect(“localhost”,”user”,”password”);

  if($connect) echo “Connect Successed!”;
//连接成功,展现Connect Successed!   else echo “Connect Failed!”;
//连接失败,展现Connect Failed!      

     ?>     

在上例中,如mysql_connect(卡塔尔(قطر‎实施破产,将显示系统的荒唐提醒,而后继续往下举办。那,该怎么屏蔽那个系统的错误提示并在波折后终止程序?
 

在MySQL中,允许在数据库函数早前增加@符号,屏蔽系统的错误提醒,同时用die(卡塔尔(قطر‎函数给出更易驾驭的不当提醒,然后die(卡塔尔(قطر‎函数将自行退出程序。
  

  上例可以改为:     

<?php   

  $connect =
@mysql_connect(“localhost”,”user”,”password”) or die (“Unable to
connect database server!”);      ?>     

如mysql_connect(State of Qatar施行破产,将显示Unable to connect database server!后,退出程序。

     (2).mysql_pconnect()   格式:int
mysql_pconnect(string [hostname] [:port],string [username],string
[password]);  

此函数与(1卡塔尔的mysql_connect(State of Qatar基本雷同,差异在于:  

    ——— 当数据库操作截止之后
,由(1卡塔尔(قطر‎的mysql_connect(卡塔尔营造的连续几天将电动关闭,而(2卡塔尔国的mysql_pconnect(State of Qatar建构的连接将继续存在,是一种稳定悠久的连天。
 


在(2)的mysql_pconnect(卡塔尔国,每一次三番五次前,都会检讨是或不是有采用同一的hostname,use,password的接二连三,假诺有,则直接使用这些连接号。

  ———
(1)的mysql_connect(State of Qatar创设的总是能够用mysql_close()关闭,而(2)的mysql_pconnect()不能用mysql_close()来关闭。
  

     <2>.关闭数据库连接函数(1个卡塔尔(قطر‎:
 

    mysql_close()   格式:int
mysql_close(int link_identifier);

 
关闭由mysql_connect(State of Qatar函数建立的接连,推行成功,再次回到ture值,退步则赶回false值。
     例子如下:

  <?php   

  $connect =
@mysql_connect(“hostname”,”user”,”password”) or die(“Unable to connect
database server!”);   

  $close = @mysql_close($connect) or
die (“Unable to close database server connect!”);

     ?>   

 
注:mysql_close(卡塔尔国无法关闭由mysql_pconnect(State of Qatar函数创建的接连。

  <3>.选拔数据库函数(1个State of Qatar:
  

  mysql_select_db()  

格式:int mysql_select_db(string
database name , int link_identifier);  

选取钦命的database name
,成功,重回1个真值(True),退步,则赶回1个False值。      例子1:

  <?php

  $select = mysql_select_db(‘forum’ ,
$connect);

  if($select)   {echo “connect db forum
successed!”;}

  else   {echo “connect db forum
failed!”;}

  ?>   

  例子2:  

澳门新葡亰平台游戏网站, <?php

  $select =
mysql_select_db(“forum”,$connect) or die(“Can not connect this DB!”);
 

?>   

  注:此函数也正是在MySQL中的USE语句:如
USE forum     

<4>.SQL查询函数(2个卡塔尔国:  

    1、mysql_query()  

格式:int mysql_query(string sqlquery ,
int link_identifier);

 
向服务器发一段正式SQL语句央浼。若是退步,则赶回一False值。     

例子:

  <?php  

$connect =
mysql_connect($hostname,$user,$pwd);  

$select =
mysql_select_db($dbname,$connect);

  $query = mysql_query($sql , $connect);

  if($query) echo “Successed !”;  

else echo “Failed !”;  

?>  

此函数必需求与mysql_select_db(卡塔尔函数合作使用,单独选拔它就毫无意义了!
 

    2、mysql_db_query()  

格式:int mysql_db_query(string
database , string sqlquery , int link_identifier);  

   
在那函数中必需钦点数据库名database和SQL语句sqlquery,如战败则赶回False。

     例子:  

    <?php  

$connect = mysql_connect($hostname ,
$user , $pwd);  

$query = mysql_db_query($dbname , $sql
, $connect);  

if($query) echo “Successed !”;

  else echo “Failed !”;

  ?>     

mysql_db_query()与mysql_query(卡塔尔国的区分就在于前面一个能够不用采取mysql_select_db(卡塔尔国来接受数据库database,而在实行SQL语句的同一时间,进行抉择数据库。

     <5>.数据库记录操作函数(5个卡塔尔(قطر‎:
    

1、mysql_fetch_array()  

格式:array mysql_fetch_array(int
query);   

 
实施成功,再次来到1个数组,该数组保存有下一条记下的值,如实行停业,则赶回False值。
 

回到的数组不仅可以够用下标来代表,也足以用字段名来表示。   

  例子:  

<?php

  $query = mysql_query($sql , $connect);

  while($arrary =
mysql_fetch_array($query))  

{     

echo $array[column1].” |
“.$array[column2];   //echo $array[0].” | “.$array[1];  

    }  

?>  

Note : 数组的下标是从0开端的!  

    2、mysql_fetch_row()  

格式:array = mysql_fetch_row(int
query);   

 
与1的mysql_fetch_array(卡塔尔(قطر‎函数功用基本相似。分歧在于mysql_fetch_row(State of Qatar只好以数组下标来表示。
 

成功重临1个数组,战败重返False值。
 

    例子:

  <?php

  $query = mysql_query($sql , $connect);
 

while($row = mysql_fetch_row($query))
 

{  

echo $row[0] . ” | ” . $row[1] .
“<br>”;   }

  ?>

  Note :
mysql_fetch_row(State of Qatar函数只可以用数组下标来代表,并从0开头。  

另:mysql_fetch_row()比mysql_fetch_array(State of Qatar施行进程快,而且都以对下一行数据实行读取。
  

  3、mysql_result()  

格式:int mysql_result(int query , int
row , string filedname);   

 
在mysql_result(卡塔尔(قطر‎中,参数row必得从0带头,参数filedname必需是实在的字段名,不能够用下标来表示。

 
实施成功,重临由数据库中抽出的字段的数值,失败则赶回False值。  

    例子:

  <?php

  $query = mysql_query($sql , $connect);
 

echo mysql_result($query , 0 ,
“column1″).”<br>”;

  echo mysql_result($query , 1,
“column1″).”<br>”;  

echo mysql_result($query , 2,
“column1″).”<br>”;

  ?>      Note :
此函数作用少,但使用方便。   

  4、mysql_fetch_object()

  格式: object mysql_fetch_object(int
query)   

 
能对点名的字段进行巡回读取,施行成功,将以对象object的款式再次回到数值,战败则赶回False值。
 

    例子:

  <?php

  $query = mysql_query($sql ,
$connect);

  while($object =
mysql_fetch_object($query))  

{  

echo $object->column1 . “<br>”;
 

echo $object->column2 . “<br>”;
 

echo $object->column3 . “<br>”;
 

}

  ?>   

     Note :
mysql_fetch_object(卡塔尔国函数推行成功后赶回的是1个目的object !

  操作如下:   $object->字段名
 

    5、mysql_data_seek()  

格式:int mysql_data_seek(int row , int
query);

  移动游标到钦点的行(row_number)
 

实施成功,再次来到真值,失利,重回False值。
 

此函数能够与mysql_fetch_array()或mysql_fetch_row(卡塔尔国合营使用,即在使用mysql_data_seek(State of Qatar函数之后,就足以用mysql_fetch_array()或mysql_fetch_row(卡塔尔函数来呈现内定的行了。

     例子:  

<?php  

$query = mysql_query($sql , $connect);
 

$seek = mysql_data_seek($query , 2);  

$arrary = mysql_fetch_array($query);
 

echo $array[column1].”<br>”;

  echo $array[column2].”<br>”;

  ?>

<6>.数据库级database的操作函数(2个卡塔尔(قطر‎:

     1、mysql_create_db()

  格式:int mysql_create_db(string
database name , int link_identifier);     

经进度序来创建1个数据库database,当然你也得以用mysql_query()或者mysql_db_query(卡塔尔国函数来树立或删除database
    

但大家得以用那个函数更为便利地树立1个database。  

马到功成再次来到1个真值,战败,则赶回1个false。
  

  例子:   

  <?php  

    $connect =
mysql_connect(“$hostname”,”$user”,”$pwd”);

  $create = mysql_create_db(“dbtest” ,
$connect);

  if($create) echo “create database
dbtest successed!”;  

else echo “create database dbtest
failed!”;   

  ?>   

     2、mysql_drop_db()  

格式:int mysql_drop_db(string database
name , int link_identifier);   

  通进度序来删除1个数据库database。   

 
但大家能够用那个函数更为便利地删除1个database。

 
成功再次来到1个真值,失败,则赶回1个false。

     例子:  

    <?php  

    $connect =
mysql_connect(“$hostname”,”$user”,”$pwd”);

  $create = mysql_drop_db(“dbtest” ,
$connect);

  if($create) echo “drop database dbtest
successed!”;  

else echo “drop database dbtest failed!”;
  

  ?>     

Note :
如用mysql_query()或mysql_db_query(卡塔尔(قطر‎,则SQL语句应该为:  

(1)create database dbtest  

(2)drop database dbtest

  (7卡塔尔 数据库音讯函数(2个):  

    1、mysql_fetch_field()  

格式:object mysql_fetch_field(int
query , int [field_offset]);

     重返1个目的,即一哈希表,下标有:
 

table : 表名   name : 字段名  
max_length : 该字段的最大尺寸  

not_null : 字段为not
null则赶回1,否则重回0  

primary_key : 字段为primary
key则赶回1,不然再次回到0  

unique_key : 字段为unique
key则赶回1,不然再次回到0  

multiple_key : 字段为非unique
key则赶回1,不然再次回到0

  numeric :
字段为numeric则赶回1,不然重返0  

blob : 字段为blob则赶回1,否则重临0
 

type : 字段的类型   unsigned :
字段为unsigned则赶回1,不然重回0  

zerofill : 字段为zero
filled则赶回1,不然再次来到0     

援引格式为:对象名->下标名     

运用此函数能够赢得表名、字段名、类型…….   
 

例子:   

  <?php

  $query = mysql_query($sql , $connect);

  while($object =
mysql_fetch_field($query))  

{  

echo “table name :
“.$object->table.”<br>”;

  echo “field name :
“.$object->name.”<br>”;  

echo “primary key :
“.$object->primary_key.”<br>”;

  echo “not null :
“.$object->not_null.”<br>”;  

echo “field type :
“.$object->type.”<br>”;  

echo “field max length :
“.$object->max_length.”<br>”;  

}  

?>   

  Note :
哈希表的是从0坐标开头的,即首先个字段为哈希表中的0项。

 
假使大家想平昔得到哈希表的第三项即第五个字段的音讯,可用如下格式:

  <?php

  $query = mysql_query($sql , $connect);
 

$object = mysql_fetch_field($query ,
2);

  echo “table name :
“.$object->table.”<br>”;

  echo “field name :
“.$object->name.”<br>”;  

echo “primary key :
“.$object->primary_key.”<br>”;

  echo “not null :
“.$object->not_null.”<br>”;  

echo “field type :
“.$object->type.”<br>”;  

echo “field max length :
“.$object->max_length.”<br>”;

  ?>   

 
其实这也得以透过上边那些函数来完结平等的目标。  

    2、mysql_field_seek()

  格式:int mysql_field_seek(int $query
, int field_offset);   

  将游标移到钦定的字段上。  

例子:  

    <?php  

$query = mysql_query($sql , $connect);

  $seek = mysql_field_seek($query , 2);
 

$object =
mysql_fetch_field($query);

  echo “table name :
“.$object->table.”<br>”;

  echo “field name :
“.$object->name.”<br>”;

  echo “primary key :
“.$object->primary_key.”<br>”;

  echo “not null :
“.$object->not_null.”<br>”;

  echo “field type :
“.$object->type.”<br>”;  

echo “field max length :
“.$object->max_length.”<br>”;

  ?>   

  这样也达到与上例同样的必要。

(8卡塔尔国 取数据库名和表名(2个):

     1、mysql_list_dbs()  

格式: int mysql_list_dbs(int
link_identifier);  

获得具有可用的数据库名(database nameState of Qatar。
  

  例子:

     <?php

  $connect = mysql_connect($host , $usr
,$pwd);  

$dbs = mysql_list_dbs($connect);

  $rows = mysql_num_rows($dbs);
 

echo “database total : “.$rows;  

$i = 0;  

while($i<$rows)

  {  

$db_name[$i] = mysql_tablename($dbs
, $i);

  echo $db_name[$i];   $i++;   }
 

?>  

就能够依次彰显出MySQL中具备的数据库名字(database name )。  

Note : 相当于MySQL中的 show
databases命令     

2、mysql_list_tables()  

格式:int mysql_list_tables(string
database name);

  显示该数据库下具有的表的名字Table
name。     

例子:  

    <?php  

$connect = mysql_connect($host , $usr ,
$pwd);

  $tables = mysql_list_tables(“mysql”);
 

$rows = mysql_num_rows($tables);
 

echo “Table total : “.$rows;   $i = 0;
 

while($i<$rows)  

{  

$table_name[$i] =
mysql_tablename($tables , $i);  

echo $table_name[$i];   $i++;  
}

     ?>     

就能够依次呈现出mysql下具有的表的名字

  Note : 约等于MySQL中的 show
tables命令(先要用 use mysql命令选中1个数据库卡塔尔国

 

 ======================================================================================================================

======================================================================================================================

再来一些mysqli 对象情势部分

 

PHP的 mysqli 扩大提供了其优先版本的具备功效,别的,由于 MySQL 已然是八个

怀有完全天性的数据库服务器 , 那为PHP 又增多了部分新特性 。 而 mysqli
恰巧也支撑了

那些新特点。

 

一. 创建和断开连接


MySQL数据库交互作用时,首先要独当一面连接,最后要断开连接,那包罗与服务器连接并

选择一个数码库 , 以至尾声关闭连接 。与 mysqli 差不离具有的性状同样 ,
那或多或少方可选用面向

对象的法子来达成,也能够接纳进度化的办法完结。

  1. 创制二个 mysqli 的指标

$_mysqli = newmysqli();

  1. 连接 MySQL的主机、用户、密码、数据库

$_mysqli->connect( ‘localhost’ , ‘root’ , ‘yangfan’ , ‘guest’ );

  1. 创办带连接参数的 mysqli对象

$_mysqli = newmysqli( ‘localhost’ , ‘root’ , ‘yangfan’ , ‘guest’ );

  1. 独自行选购择数据库

$_mysqli->select_db( ‘testguest’ );

  1. 断开 MySQL

$_mysqli->close();

 

二. 管理连接错误

假使不可能连接
MySQL数据库,那么那几个页面不太可能继续形成预期的做事。因而,一

定要注意监视连接错误并相应地做出反应 。Mysqli
扩张包罗有好些个特点可以用来捕获错误信

息,例如:mysqli_connect_errno() 和 mysqli_connect_error() 方法。

mysqli_connect_errno(卡塔尔国函数再次来到连接数据库再次回到的错误号。

Mysqli_connect_error(State of Qatar函数重回连接数据库重返的错误代码。

if(mysqli_connect_errno()) {

echo’ 数据库连接错误,错误消息: ‘ .mysqli_connect_error();

exit();

}

errno属性再次来到数据库操作时的错误号。

error属性重返数据库操作时的错误代码。

if( $_mysqli ->errno) {

echo’ 数据库操作时发生错误,错误代码是: ‘ . $_mysqli ->error;

}

 

三. 与数据库进行相互作用

绝大相当多查询都与成立(CreationState of Qatar 、获取 (RetrievalState of Qatar 、更新 (UpdateState of Qatar 和删除
(Deletion卡塔尔(قطر‎ 任

务有关,这几个职分统称为 CRUD 。

  1. 获取数据

网页程序大好多干活都以在得到和格式化所恳求的数量。为此,要向数据库发送

SELECT查询,再对结果开展迭代管理,将各行输出给浏览器,并遵照自身的渴求输出。

// 设置一下编码 utf8

$_mysqli->set_charset( “utf8” );

// 创立一句 SQL 语句

$_sql = “SELECT* FROM t g_user” ;

// 实行 sql 语句把结果集赋给$_result

$_result = $_mysqli->query( $_sql );

// 将结果集的第一行输出

print_r( $_result->fetch_row());

// 释放查询内部存款和储蓄器 ( 销毁 卡塔尔(قطر‎

$_result->free();

 

  1. 浅析查询结果

即使试行了询问并预备好结果集 ,上边就能够解析获取到的结果行了 。
你能够运用三个

方式来收获各行中的字段 ,具体选用哪三个办法首要决定于个人喜好 ,
因为只是引用字段的

格局有所差异。

将结果集放到对象中

出于您恐怕会使用 mysqli的面向对象的语法 ,
所以完全能够运用面向对象的措施管理结

果集。能够选取fetch_object(卡塔尔 方法来实现。

// 将结果集包装成靶子

$_row = $_reslut->fetch_object();

// 输出对象中的二个字段(属性)

echo $_row->tg_username;

// 遍历全体的客商名称

while (!! $_row =$_reslut ->fetch_object()) {

echo$_row ->tg_username. ‘ <br /> ‘ ;

}

行使索引数组和涉嫌数组

// 将结果集包装成数组 ( 索引 +关联 State of Qatar

$_row = $_reslut->fetch_array();

// 输出下标是 3 的字段(属性)

echo $_row [ 3 ];

// 将结果集包装成索引数组

$_row = $_reslut->fetch_row();

echo $_row [ 3 ];

// 将结果集包装成关联数组

$_row = $_reslut->fetch_assoc();

echo $_row [‘tg_username’ ];

 

  1. 规定所接受的行和受影响的行

平日来说希望能够规定 SELECT查询再次回到的行数 , 或许受 INSERT 、 UPDATE 或
DELET 查询

听得多了自然能详细说出来的行数。大家得以行使num_rows 和 affected_rows 七个脾气

// 当使用查询时,想了然 SELECT查询了稍微行,能够运用 num_rows 。

echo $_reslut->num_rows;

// 当使用查询时 , 想领悟SELECT 、 INSERT 、 UPDATE 、 DELETE
查询时影响的行

数,能够运用affected_rows; 注意,它是 $_mysqli 下的质量

echo $_mysqli->affected_rows;

 

  1. 移动指针的操作和获得字段

当你并不想从第一条数据伊始得到 ,大概并不想从第四个字段获取 ,
你尚可数据指

针移动恐怕字段指针移动的法子调度到适当的职位。 当然 ,
你还足以获取字段的名目及其相

关的本性。

// 总计有多少条字段

echo $_reslut->field_count;

// 获取字段的称号

$_field = $_reslut->fetch_field();

echo $_field->name;

// 遍历字段

while (!! $_field =$_reslut ->fetch_field()) {

echo$_field ->name. ‘<br />’ ;

}

// 一回性获得字段数组

print_r( $_reslut->fetch_fields());

// 移动多少指针

$_reslut->data_seek( 5 );

// 移动字段指针

$_reslut->field_seek( 2 );

 

  1. 施行多条 SQL 语句

有时 ,大家须求在一张页面上同期实践多条 SQL 语句 ,
在此之前的措施便是独家创建多

个结实集然后选用。但这样财富消耗不小,也不低价管理。PHP 提供了推行多条
SQL 语句

的方法 $_mysqli->multi_query() ;

// 创造多条 SQL 语句

$_sql .=”SELECT * FROM tg_user;” ;

$_sql .=”SELECT * FROM tg_photo;” ;

$_sql .=”SELECT * FROM tg_article” ;

// 最先施行多条 SQL 语句

if ( $_mysqli->multi_query( $_sql )) {

//早先取得第一条 SQL 语句的结果集

$_result= $_mysqli ->store_result();

print_r($_result ->fetch_array());

//将结果集指针移到下三个

$_mysqli->next_result();

$_result= $_mysqli ->store_result();

print_r($_result ->fetch_array());

$_mysqli->next_result();

$_result= $_mysqli ->store_result();

print_r($_result ->fetch_array());

} else {

echo’sql 语句有误! ‘ ;

}

 

  1. 施行数据库事务

事务 (transactionState of Qatar是充当任何一个单元的一组有序的数据库操作 。
如若一组中的全部操

作都成功 , 则以为职业成功 ,即便独有一个失利操作 , 事务也不成功 。
要是持有操作成功完

成 , 事务则提交 (commit卡塔尔 ,其改良将功用于具备别的数据库进程 。
假诺二个操作战败 , 则事

务将回滚 (roll back卡塔尔国,该事务全部操作的震慑都将注销。

率先 , 您的 MySQL 是InnoDB 或 BDB 引擎的一种 , 常常的话 , 你安装了
AppServ 的购并

包 , 你筛选 InnoDB的斯特林发动机的数据库就能够 。 假若您组建的表不是 InnoDB ,
能够在 phpmyadmin

里修改。

// 首先你不得不关闭自动提交数据

$_mysqli->autocommit( false );

// 创造二个 SQL 语句,必得同一时候运行成功,无法现身四个得逞,叁个波折

$_sql .=”UPDATE tg_friend SET tg_state=tg_state+5 WHERE tg_id=1;” ;

$_sql .=”UPDATE tg_flower SET tg_flower=tg_flower-5 WHERE tg_id=1;”
;

// 试行两条 SQL 语句

if ( $_mysqli->multi_query( $_sql )) {

//获取第一条 SQL 一震慑的行数

$_success= $_mysqli ->affected_rows == 1 ? true : false ;

//下移,第二条 SQL

$_mysqli->next_result();

//获取第二条 SQL 影响的行数

$_success2 = $_mysqli ->affected_rows == 1 ? true : false ;

//判定是还是不是都例行通过了,多个 SQL

if( $_success && $_success2 ) {

$_mysqli->commit();

echo’ 完美提交! ‘ ;

}else {

$_mysqli->rollback();

echo’ 程序现身非凡! ‘ ;

}

}

} else {

echo”SQL 语句有误: ” . $_mysqli ->errno. $_mysqli ->error;

}

// 最终还非得开启自动提交

$_mysqli->autocommit( true );

 

 

===============================================================================================================================

===============================================================================================================================

 

附带是mysql 类操作方法,附上代码片..

 

<?php
class DummyMySQLClass{

 var $DBHost = ''; /* 数据库主机名称 */
 var $DBUser = ''; /* 数据库用户名称 */
 var $DBPswd = ''; /* 数据库密码     */
 var $DBName = ''; /* 数据库名称     */

 var $Result = NULL; /* private */
 var $LinkId = NULL; /* private */
 var $Record = NULL; /* 包含一条记录的内容 */
 var $Rows   = 0;

 var $MustBeHalt = true; /* 有了错误立即停止 */
 var $RecordCase = NULL; /* 只在 nextRecord() 和 f()方法里出现 */

 function DummyMySQLClass($DBHost = '', $DBUser = '', $DBPswd = '', $DBName = '', $newLink = false){
  if(is_array($DBHost)){
   $DBHost  = $DBHost[0];
   $DBUser  = $DBHost[1];
   $DBPswd  = $DBHost[2];
   $DBName  = $DBHost[3];
   $newLink = empty($DBHost[4])?false:$DBHost[4];
  }elseif(str_replace(array("/", "@"), array("", ""), $DBHost) != $DBHost){
   $dsn = $this->splitDSN($DBHost);

   $DBTpye  = $dsn[0];
   $DBHost  = $dsn[1].":".$dsn[2];
   $DBUser  = $dsn[3];
   $DBPswd  = $dsn[4];
   $DBName  = $dsn[5];
   $newLink  = $dsn[6] == ''?$newLink:$dsn[6];
  }
  $this->DBHost = empty($DBHost)?$this->DBHost:$DBHost;
  $this->DBUser = empty($DBUser)?$this->DBUser:$DBUser;
  $this->DBPswd = empty($DBPswd)?$this->DBPswd:$DBPswd;
  $this->DBName = empty($DBName)?$this->DBName:$DBName;

  if(!empty($DBHost)){
   $this->connect($this->DBHost, $this->DBUser, $this->DBPswd, $newLink);
  }
  if(!empty($DBName)){
   $this->selectDB($DBName);
  }
 }

 function splitDSN($dsn){
  //$dsn = "数据库类型名称://入口帐号:入口密码@数据库主机名:端口号/数据库名/是否总是打开新的连接";
  //$dsn = "MySQL://Dummy:123@localhost:3306/tetx/false";
  $dsn = preg_split("/[://@]/", $dsn);

  $DBTpye  = '';
  $DBHost  = '';
  $DBPort  = '';
  $DBUser  = '';
  $DBPswd  = '';
  $DBName  = '';
  $DBNewLink  = false;

  $DBTpye  = $dsn[0];
  $DBHost  = $dsn[5];
  $DBPort  = $dsn[6];
  $DBUser  = $dsn[3];
  $DBPswd  = $dsn[4];
  $DBName  = $dsn[7];
  $DBNewLink  = $dsn[8];

  return array($DBTpye, $DBHost, $DBPort, $DBUser, $DBPswd, $DBName, $DBNewLink);
 }

 function affectedRows(){ /* 取得前一次 MySQL 操作所影响的记录行数 */
  return mysql_affected_rows($this->LinkId);
 }

 function changeUser($user, $password){ /* 改变活动连接中登录的用户 */
  return mysql_change_user($user, $password, $this->DBName, $this->LinkId);
 }

 function clientEncoding(){ /* 返回字符集的名称 */
  return mysql_client_encoding($this->LinkId);
 }

 function close(){ /* 关闭 MySQL 连接 */
  $close = mysql_close($this->LinkId);
  $this->LinkId = NULL;
  $this->Result = NULL;
  $this->Record = NULL;
  return $close;
 }

 function connect($DBHost = '', $DBUser = '', $DBPswd = '', $newLink = false){//, int client_flags){ /* 打开一个到 MySQL 服务器的连接 */
  $connect = @mysql_connect(empty($DBHost)?$this->DBHost:$DBHost, empty($DBUser)?$this->DBUser:$DBUser, empty($DBPswd)?$this->DBPswd:$DBPswd, $newLink);
  if(!is_resource($connect)){
   $this->halt("连接数据库失败!", 1);
   return false;
  }
  $this->LinkId = $connect;
  return true;
 }

 function createDB($DBName){ /* 新建一个 MySQL 数据库 */
  return @mysql_create_db($DBName, $this->LinkId) or die($this->halt("创建数据库 ".$DBName." 失败!"));
 }

 function dataSeek($rowNumber){ /* 移动内部结果的指针 */
  return mysql_data_seek($this->Result, $rowNumber);
 }

 function dbName($row, $field = NULL){ /* 取得结果数据 */
  if(empty($field)){
   return mysql_db_name($this->Result, $row);
  }
  return mysql_db_name($this->Result, $row, $field);
 }

 function dbQuery($DBName, $queryString){ /* 发送一条 MySQL 查询 */
  $this->Result = mysql_db_query($DBName, $queryString, $this->LinkId);
  return $this->Result?true:false;
 }

 function dropDB($DBName){ /* 丢弃(删除)一个 MySQL 数据库 */
  return mysql_drop_db($DBName, $this->LinkId);
 }

 function errno(){ /* 返回上一个 MySQL 操作中的错误信息的数字编码 */
  return mysql_errno($this->LinkId);
 }

 function error(){ /* 返回上一个 MySQL 操作产生的文本错误信息 */
  return mysql_error($this->LinkId);
 }

 function escapeString($unescapedString){ /* 转义一个字符串用于 mysql_query */
  return mysql_escape_string($unescapedString);
 }

 function fetchArray($Rows = 0, $resultType = MYSQL_BOTH){ /* 从结果集中取得一行作为关联数组,或数字数组,或二者兼有 */
  if(!is_resource($this->Result)){
   return false;
  }
  $fetchArray = mysql_fetch_array($this->Result, $resultType);
  if($fetchArray && $Rows){$this->Rows++;}
  return $fetchArray;
 }

 function fetchAssoc($Rows = 0){ /* 从结果集中取得一行作为关联数组 */
  if(!is_resource($this->Result)){
   return false;
  }
  $fetchAssoc = mysql_fetch_assoc($this->Result);
  if($fetchAssoc && $Rows){$this->Rows++;}
  return $fetchAssoc;
 }

 function fetchField($fieldOffset = NULL){ /* 从结果集中取得列信息并作为对象返回 */
  if(empty($fieldOffset)){
   return mysql_fetch_field($this->Result, $fieldOffset);
  }
  return mysql_fetch_field($this->Result);
 }

 function fetchLengths(){ /* 取得结果集中每个输出的长度 */
  return mysql_fetch_lengths($this->Result);
 }

 function fetchObject($Rows = 0){ /* 从结果集中取得一行作为对象 */
  if(!is_resource($this->Result)){
   return false;
  }
  $fetchObject = mysql_fetch_object($this->Result);
  if(is_object($fetchObject) && $Rows){$this->Rows++;}
  return is_object($fetchObject)?$fetchObject:false;
 }

 function fetchRow($Rows = 0){ /* 从结果集中取得一行作为枚举数组 */
  if(!is_resource($this->Result)){
   return false;
  }
  $fetchRow = mysql_fetch_row($this->Result);
  if($fetchRow && $Rows){$this->Rows++;}
  return $fetchRow;
 }

 function fieldFlags($fieldOffset){ /* 从结果中取得和指定字段关联的标志 */
  return mysql_field_flags($this->Result, $fieldOffset);
 }

 function fieldLen($fieldOffset){ /* 返回指定字段的长度 */
  return mysql_field_len($this->Result, $fieldOffset);
 }

 function fieldName($fieldIndex){ /* 取得结果中指定字段的字段名 */
  return mysql_field_name($this->Result, $fieldIndex);
 }

 function fieldSeek($fieldOffset){ /* 将结果集中的指针设定为制定的字段偏移量 */
  return mysql_field_seek($this->Result, $fieldOffset);
 }

 function fieldTable($fieldOffset){ /* 取得指定字段所在的表名 */
  return mysql_field_table($this->Result, $fieldOffset);
 }

 function fieldType($fieldOffset){ /* 取得结果集中指定字段的类型 */
  return mysql_field_type($this->Result, $fieldOffset);
 }

 function freeResult(){ /* 释放结果内存 */
  return mysql_free_result($this->Result);
 }

 function getClientInfo(){ /* 取得 MySQL 客户端信息 */
  return mysql_get_client_info();
 }

 function getHostInfo(){ /* 取得 MySQL 主机信息 */
  return mysql_get_host_info($this->LinkId);
 }

 function getProtoInfo(){ /* 取得 MySQL 协议信息 */
  return mysql_get_proto_info($this->LinkId);
 }

 function getServerInfo(){ /* 取得 MySQL 服务器信息 */
  return mysql_get_server_info($this->LinkId);
 }

 function info(){ /* 取得最近一条查询的信息 */
  return mysql_info($this->LinkId);
 }

 function insertId(){ /* 取得上一步 INSERT 操作产生的 ID */
  return mysql_insert_id($this->LinkId);
 }

 function listDBs(){ /* 列出 MySQL 服务器中所有的数据库 */
  $this->Result = mysql_list_dbs($this->LinkId);
  return $this->Result?true:false;
 }

 function listFields($DBName, $tableName){ /* 列出 MySQL 结果中的字段 */
  $this->Result = mysql_list_fields($DBName, $tableName, $this->LinkId);
  return $this->Result?true:false;
 }

 function listProcesses(){ /* 列出 MySQL 进程 */
  $this->Result = mysql_list_processes($this->LinkId);
  return $this->Result?true:false;
 }

 function listTables($DBName = ''){ /* 列出 MySQL 数据库中的表 */
  $DBName = empty($DBName)?$this->DBName:$DBName;
  $this->Result = mysql_list_tables($DBName, $this->LinkId);
  return $this->Result?true:false;
 }

 function numFields(){ /* 取得结果集中字段的数目 */
  return mysql_num_fields($this->Result);
 }

 function numRows(){ /* 取得结果集中行的数目 */
  return mysql_num_rows($this->Result);
 }

 function pconnect($DBHost = '', $DBUser = '', $DBPswd = ''){ /* 打开一个到 MySQL 服务器的持久连接 */
  $connect = @mysql_pconnect(empty($DBHost)?$this->DBHost:$DBHost, empty($DBUser)?$this->DBUser:$DBUser, empty($DBPswd)?$this->DBPswd:$DBPswd);
  if(!is_resource($connect)){
   $this->halt("连接数据库失败!",1);
   return false;
  }
  $this->LinkId = $connect;
  return true;
 }

 function ping(){ /* Ping 一个服务器连接,如果没有连接则重新连接 */
  return mysql_ping($this->LinkId);
 }

 function query($queryString){ /* 发送一条 MySQL 查询 */
  if(empty($queryString)){
   $this->halt("SQL 语句为空!", 1);
   return false;
  }
  if(!is_resource($this->LinkId)){
   $this->halt("请先确保数据库已经连接上!", 1);
   return false;
  }
  $this->Result = mysql_query($queryString, $this->LinkId);// or die(mysql_error());//print_r($this);
  return $this->Result?true:false;
 }

 function realEscapeString($unescapedString){ /* 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 */
  return mysql_real_escape_string($unescapedString, $this->LinkId);
 }

 function result($row, $field = NULL){ /* 取得结果数据 */
  if(empty($field)){
   return mysql_result($this->Result, $row, $field);
  }
  return mysql_result($this->Result, $row);
 }

 function selectDB($DBName = 'test'){ /* 选择 MySQL 数据库 */
  return mysql_select_db(empty($DBName)?$this->$DBName:$DBName, $this->LinkId);
 }

 function stat(){ /* 取得当前系统状态 */
  return mysql_stat($this->LinkId);
 }

 function tablename($index){ /* 取得表名 */
  return mysql_tablename($this->Result, $index);
 }

 function threadId(){ /* 返回当前线程的 ID */
  return mysql_thread_id($this->LinkId);
 }

 function unbufferedQuery($queryString){ /* 向 MySQL 发送一条 SQL 查询,并不获取和缓存结果的行 */
  $this->Result = mysql_unbuffered_query($queryString,$this->LinkId);
  return $this->Result?true:false;
 }
/*-- 上面的方法名跟手册上 MySQL 的那些函数名是一对一的,除了“splitDSN”和“构造函数” --*/
/*-- 下面是扩展,也就是说下面的这些方法在手册上是找不到影子的                         --*/
 function free(){ /* 释放结果内存,效果 freeResult 一样,只是这样简单些,少写几个字母,算是别名吧~ ^_^ */
  return $this->freeResult();
 }

 function setMustBeHalt($MustBeHalt = false){
  $this->MustBeHalt = $MustBeHalt;
 }

 function getMustBeHalt(){
  return $this->MustBeHalt;
 }
/* 以下是支持事物扩展 */
 function setAutoCommit($AutoCommit = 1){ /* 默认为不支持事务 */
  mysql_query("SET AUTOCOMMIT = ".$AutoCommit);
 }

 function begin(){ /* 事务开始 */
  @mysql_query("LOCK TABLES");
  @mysql_query("UNLOCK TABLES");
  $this->setAutoCommit(0);
  mysql_query("BEGIN");
 }

 function rollback(){ /* 回滚,继续默认的不支持事务 */
  mysql_query("ROLLBACK");
  @mysql_query("UNLOCK TABLES");
  $this->setAutoCommit(1);
 }

 function commit(){ /* 事务结束,继续默认的不支持事务 */
  mysql_query("COMMIT");
  @mysql_query("UNLOCK TABLES");
  $this->setAutoCommit(1);
 }
/* 以上是支持事物扩展 */
 function getRows(){ /* 取得已经读出的数据记录数 */
  return $this->Rows;
 }

 function getDBName(){
  return $this->DBName;
 }

 function nextRecord($resultType = 0){ /* 跟 phplib 接轨,同 phplib 的 next_record */
  $record = NULL;
  switch($resultType){
   case 1:
    $record = @mysql_fetch_assoc($this->Result);
    $this->RecordCase = 1;
   break;
   case 2:
    $record = @mysql_fetch_row($this->Result);
    $this->RecordCase = 2;
   break;
   case 3:
    $record = @mysql_fetch_object($this->Result);
    $this->RecordCase = 3;
   break;
   default:
    $record = @mysql_fetch_array($this->Result);
    $this->RecordCase = 0;
   break;
  }
  if(is_resource($record)){
   $this->Record = $record;
  }else{
   return false;
  }
 }

 function f($fieldName){ /* 跟 phplib 接轨 */
  switch($this->RecordCase){
   case 3:
    return is_object($this->Record)?$this->Record->$fieldName:NULL;
   break;
   default:
    return $this->Record[$fieldName];
   break;
  }
 }
/* 下面的自己可以定义格式 */
 function halt($msg = "未知错误!", $MustBeHalt = 0){
  echo $msg;
  if($MustBeHalt !== 0 || $this->getMustBeHalt()){
   die();
  }
 }
/* 下面的可要可不要,因为得PHP5才行 */
 function __get($nm){
  if(isset($this->$nm)){
   //
  }else{
   $this->halt("没有的成员变量 :$nm/n",1);
  }
 }

 function __set($nm, $val){
  //
 }

 function __call($m, $a){
  print "<hr>调用不存在的方法——".$m."(".join(",",$a).")!/n";
  echo '<pre>';
  var_dump($a);
  echo '</pre>';
  $this->halt("<hr>");
 }

} // End DummyMySQLClass
?>
<?php
/**
function __autoload($className) {
   include_once $className . ".php";
}
$DMC = new DummyMySQLClass("localhost","root","","test");
//print_r($DMC);

*/
//---------------------------------------------------------
//---------------------------------------------------------


//---------------------------------------------------------
/**4
$DMC->query("SELECT * FROM `purchase_product` LIMIT 1");
while($fetchObject = $DMC->fetchObject(3)){
 echo $DMC->fieldName(0).'<br>'; // 效果如:ID
 echo $DMC->fieldType(0).'<br>';
 echo $DMC->fieldLen(0).'<br>'; // 效果如:9
 print_r($DMC->fieldFlags(0)); // 效果如:not_null primary_key auto_increment
 echo '<hr>合起来的效果:<br>';
 echo '`'.$DMC->fieldName(0).'` '.$DMC->fieldType(0).'('.$DMC->fieldLen(0).') '.str_replace(array("NOT_NULL","PRIMARY_KEY"),array("NOT NULL","PRIMARY KEY"),strtoupper($DMC->fieldFlags(0))).",/n<br>";
}
//下面这是秘籍!!^_^
$DMC->query("show create table `purchase_product`");
while($fetchObject = $DMC->fetchObject(3)){
 $t = 'Create Table';print_r($fetchObject->$t);
}
*/
//---------------------------------------------------------
/**4
echo "getHostInfo() --- ".$DMC->getHostInfo().'<br>';
echo "getClientInfo() - ".$DMC->getClientInfo().'<br>';
echo "getProtoInfo() -- ".$DMC->getProtoInfo().'<br>';
echo "getServerInfo() - ".$DMC->getServerInfo().'<br>';
echo "info() ---------- ".$DMC->info().'<br>';
*/
//---------------------------------------------------------
/**3
//取得指定库的所有表
$DMC->listTables("test");
while($row = $DMC->fetchRow()){
 print "Table: ".$row[0]."/n";
}
//下面for的效果跟上面while的一样
for ($i = 0; $i < $DMC->numRows(); $i++){
 printf ("Table: %s/n", $DMC->tablename($i));
}
*/
//---------------------------------------------------------
/**2
//数据查询
$DMC->query("SELECT * FROM `purchase_product` LIMIT 1");
while($fetchObject = $DMC->fetchObject(3)){
 print_r($fetchObject);
 print_r($DMC->fetchLengths()); // 是记录的长度,不是字段的长度
 //print_r($DMC);
}
*/
//---------------------------------------------------------
/**1
// 取得指定库指定表名称的字段
$DMC->listFields("test","purchase_product");
$a = $DMC->numFields();
for($i=0; $i<$a; $i++){
 echo $DMC->fieldName($i).' ';
}
*/
/////////////////////////////////////////////////
//                                             //
// 环境:PHP5.0.2 + APACHE:2.0.52 +Win2Kp_sp4  //
//                                             //
/////////////////////////////////////////////////
?>

================================待续======================================

 

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图