设为首页收藏本站
开启辅助访问
切换到窄版

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3772|回复: 6

构架生物数据库不得不掌握的PHP操作技术

[复制链接]
发表于 2012-4-15 15:48:34 | 显示全部楼层 |阅读模式
非常详细的PHP操作数据库教程
1. 建立和关闭连接
1) mysql_connect()

resource mysql_connect([string hostname[:port][:/path/to/socket][,string username] [,string password]])

所有参数都是可选的

举例:

@mysql_connect("localhost", "user","password")

or die("Could not connect to mysql server!");

注意,@符号表示禁止失败尝试导致的任何错误信息,用户将看到的是die()中指定的错误信息.



注意,当与多个mysql进行连接时,必须指定每个连接的链接ID,如下:

$link1 = @mysql_connect("server1", "user","password")

or die("Could not connect to mysql server!");

$link2 = @mysql_connect("server2", "user","password")

or die("Could not connect to mysql server!");

2) mysql_pconnect()

resource mysql_pconnect([string hostname[:port][:/path/to/socket][,string username] [,string password]])

mysql_connect()不同的是:会首先查找现有链接,不存在时才创建.

注意,不需要显示关闭连接(mysql_close()),因为连接将放在池中,所以叫持久连接.

3) mysql_close()

boolean mysql_close([resource link_id])

关闭连接不是必须的,因为可以由mysql的垃圾回收来处理.

如果没有指定link_id,则关闭最近的链接.

2. 选择数据库

mysql_select_db()

boolean mysql_select_db(string db_name [, resource link_id])

3. 查询MySql
1) mysql_query()

resource mysql_query(string query [,resource link_id])

负责执行query.

2) mysql_db_query()

resource mysql_db_query(string database, string query [, resourcelink_id])

等价于mysql_select_db() + mysql_query(),从参数中就可以清楚的看出来.

4. 获取和显示数据
1) mysql_result()

mixed mysql_result(resource result_set, int row [,mixed field])

result_set 的指定row 中获取一个field 的数据. 简单但是效率低.



举例:

$link1 = @mysql_connect("server1", "webuser","password")

or die("Could not connect to mysql server!");

@mysql_select_db("company") or die("Could not selectdatabase!");



$query = "select id, name from product order by name";

$result = mysql_query($query);

$id = mysql_result($result, 0, "id");

$name = mysql_result($result, 0, "name");



mysql_close();



注意,上述代码只是输出结果集中的第一条数据的字段值,如果要输出所有记录,需要循环处理.

...

for ($i = 0; $i <= mysql_num_rows($result); $i++)

{

$id = mysql_result($result, 0, "id");

$name = mysql_result($result, 0, "name");

echo "Product: $name ($id)";

}

...



注意,如果查询字段名是别名,mysql_result中就使用别名.

2) mysql_fetch_row()

array mysql_fetch_row(resource result_set)

result_set中获取整行,把数据放入数组中.

举例(注意和list 的巧妙配合):

...

$query = "select id, name from product order by name";

$result = mysql_query($query);

while(list($id, $name) = mysql_fetch_row($result)) {

echo "Product: $name ($id)";

}
3) mysql_fetch_array()

array mysql_fetch_array(resource result_set [,int result_type])

mysql_fetch_row()的增强版.

result_set的每一行获取为一个关联数组或/<aclass="vLink1" id="vad_6"onmouseover="if(typeof(showTitle)!='undefined'){this.title='';window.clearTimeout(hideTO);showTitle(event,this, 6,'');}" title="中国水资讯网.水论坛@Vogate.com" style="font-size: 1em"href="http://action.vogate.com/c/c.php?r=&aid=3590&sid=6235007045038635&click=1&url=http%3A//www.cjk3d.net/news%7C%u65B0%u95FB%u4E2D%u5FC3%uFF1A%u79D1%u7814%u53CA%u5DE5%u7A0B%u76F8%u5173%u65B0%u95FB%3Bhttp%3A//top.cjk3d.net%7C%u4E2D%u56FD%u6C34%u5229%u7F51%u7AD9%u6392%u884C%u699C%3Bhttp%3A//wiki.cjk3d.net%7C%u57FA%u4E8Ewiki%u7684%u6C34%u79D1%u5B66%u77E5%u8BC6%u5E93%3Bhttp%3A//www.cjk3d.net/bbs%7C%u6C34%u8BBA%u575B%uFF1A%u6C34%u79D1%u5B66%u548C%u6C34%u5DE5%u7A0B%u793E%u533A%3Bhttp%3A//model.cjk3d.net%7C%u6C34%u52A8%u529B%u6570%u503C%u6A21%u62DF%uFF1A%u4EE3%u7801%u3001%u8F6F%u4EF6&v=0&k=%u6570%u503C&s=http%3A//ifisker.com/blog/post/0707/php-database.html&rn=970173"target="_blank">数值索引数组.

默认获取两种数组,result_type可以设置:

MYSQL_ASSOC:返回关联数组,字段名=>字段值

MYSQL_NUM:返回数值索引数组.

MYSQL_BOTH:获取两种数组.因此每个字段可以按索引偏移引用,也可以按字段名引用.

举例:

...

$query = "select id, name from product order by name";

$result = mysql_query($query);

while($row = mysql_fetch_array($result, MYSQL_BOTH)) {

$name = $row['name'];//或者 $name = $row[1];

$name = $row['id'];//或者 $name = $row[0];


echo "Product: $name($id)";

}

...


4) mysql_fetch_assoc()

array mysql_fetch_assoc(resource result_set)

相当于 mysql_fetch_array($result, MYSQL_ASSOC)


5) mysql_fetch_object()

object mysql_fetch_object(resource result_set)

mysql_fetch_array()功能一样,不过返回的不是数组,而是一个对象.

举例:

...

$query = "select id, name from product order by name";

$result = mysql_query($query);

while($row = mysql_fetch_object($result)) {

$name = $row->name;

$name = $row->id;

echo "Product: $name ($id)";

}

5. 所选择的记录和受影响的记录

1) mysql_num_rows()

int mysql_num_rows(resource result_set)

返回result_set中的行数.

注意,mysql_num_rows()只在确定select语句查询获得的记录数有效,如果要获取insert/updata/delete查询影响的记录数,需要使用mysql_affected_rows().

2) mysql_affected_rows()

int mysql_affected_rows([resource link_id])

获取insert/updata/delete查询影响的记录数

注意,不需要输入参数,默认使用最近建立的数据库连接的最近结果.可以使用可选参数link_id来选择数据库连接.


6. 获取数据库和表的信息
1) mysql_list_dbs()

resource mysql_list_dbs([resource link_id])

获取服务器上所有数据库名称.

举例:

mysql_connect("localhost", "name","pwd");

$dbs = mysql_list_dbs();

while (list($db) = mysql_fetch_row(dbs)) {

echo "$db <br>";

}

注意,输出结果与使用的用户权限相关.

2) mysql_db_name()

string mysql_db_name(resource result_set, interger index)

获取在mysql_list_dbs()返回的result_set中位置为index的数据库名.


3) mysql_list_tables()

resource mysql_list_tables(string database [,resource link_id])

获取database中的所有表名.

4) mysql_tablename()

string mysql_tablename(resource result_set, interger index)

获取mysql_list_tables()返回的result_set中位置为index的表名.

在学习PHPCOM .NetWindows)函数的时候,发现了一个通过COM操作SQL SERVER的例子,查找了相关的资料,于是就有了这篇PHP连接ACCESS的文章,相信网上已经很多了,还是贴在这里吧。

我的机器环境:WIN2000APACHE2PHP Version 5.1.0RC1

<?php
$conn = newCOM("ADODB.Connection") or die("Cannot startADODB.Connection");
$conn->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\\php5\\netBook.mdb");
$rs = $conn->Execute("select * frommanage");
// 记录集
$num_columns = $rs->Fields->Count();
echo $num_columns . "<br/>\n";
for ($i=0; $i < $num_columns; $i++) {

$fld[$i] = $rs->Fields($i);
}
$rowcount = 0;
while (!$rs->EOF) {

for ($i=0; $i < $num_columns; $i++)

{

echo htmlspecialchars($fld[$i]->value) . "\t";

}

echo "<br />\n";

$rowcount++;
//rowcount 自增

$rs->MoveNext();
}
$rs->Close(); //关闭数据集
$conn->Close();
?>


非常详细的PHP操作数据库教程.doc (41 KB, 下载次数: 2)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|生物信息学论坛 ( 蜀ICP备09031721号  

GMT+8, 2017-6-22 20:12 , Processed in 0.108774 second(s), 24 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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