服务器之家

服务器之家 > 正文

PHP操作mysql函数详解,mysql和php交互函数

时间:2019-11-25 14:07     来源/作者: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 [, resource link_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 select database!”); 
$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的每一行获取为一个关联数组或/和数值索引数组. 
默认获取两种数组,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的表名. 
在学习PHP的COM 和 .Net(Windows)函数的时候,发现了一个通过COM操作SQL SERVER的例子,查找了相关的资料,于是就有了这篇PHP连接ACCESS的文章,相信网上已经很多了,还是贴在这里吧。 
我的机器环境:WIN2000,APACHE2,PHP Version 5.1.0RC1 

复制代码代码如下:


<?php 
$conn = new COM(“ADODB.Connection”) or die(“Cannot start ADODB.Connection”); 
$conn->Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\php5\\netBook.mdb”); 
$rs = $conn->Execute(“select * from manage”); // 记录集 
$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(); 
?> 

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
运维必须知道的关于云服务器的十个问题
运维必须知道的关于云服务器的十个问题 2019-05-24
返回顶部