PHP访问MySQL数据库
因为连接数据库需要较长的时间和较大的资源开销,所以如果在多个网页中都要频繁地访问数据库,则可以建立与数据库的持续连接。即调用mysql_pconnect()代替mysql_connect()。
基本步骤:
1.连接服务器:mysql_connect();
2.选择数据库:mysql_select_db();
3.执行SQL语句:mysql_query();
————————————————————————
查询:select
显示:show
插入:insert into
更新:update
删除:delete
————————————————————————
4.关闭结果集:mysql_free_result($result);
5.关闭数据库:mysql_close($link);
__________________________________________________________
————————————————————————————————
分析testconn.php文件:
[php]view plaincopyprint?
- <?php 
- $link=mysql_connect("localhost","root","root") ordie("connection 
- error".mysql_error()); 
- $flag=mysql_select_db("guestbook",$link); 
- if($flag){ 
- echo"数据库选择成功!"; 
- } 
- ?><SPAN style="FONT-SIZE: 18px"></SPAN> 
<?php	$link=mysql_connect("localhost","root","root") or die("connection error".mysql_error());	$flag=mysql_select_db("guestbook",$link);	if($flag){		echo "数据库选择成功!";	}?>1.连接服务器:mysql_connect('hostname','username','password')
其中hostname代表 主机名或IP(若端口号省略则默认为3306),该函数返回值代表一个资源标识(相当于指针),通常赋值给一个变量:
$link=mysql_connect("localhost","root","root") or die("can't connect database".mysql_error());
2.连接指定数据库:mysql_select_db("数据库名"[,连接标识]),最多两个参数,成功则返回1,失败则返回0,示例如下
[php]view plaincopyprint?
- <?php 
- $link=mysql_connect("localhost","root","root") ordie("connection error".mysql_error()); 
- $flag=mysql_select_db("guestbook",$link); 
- mysql_query("set names gb2312"); 
- if($flag){ 
- echo"connect success!"."<br/>"; 
- } 
- ?> 
<?php$link=mysql_connect("localhost","root","root") or die("connection error".mysql_error());$flag=mysql_select_db("guestbook",$link);mysql_query("set names gb2312");if($flag){		echo "connect success!"."<br/>";	}?>3.执行SQL语句:mysql_query("SQL语句"[,连接标识]),最多两个参数,如果执行的是查询指令select,
成功则返回查询后的结果集(相当于指针),失败则返回0,如果SQL语句是insert,delete,update等操作
指令,成功则返回1,最多两个参数,成功则返回1,失败则返回0
$result=mysql_query("select * from tb_memeber",$link);
注:mysql_unbuffered_query()函数与mysql_query类似,但是不自动获取并缓存结果集,所以效率更高。
4.使用mysql_fetch_array()函数从数组结果集中获取信息
语法格式:array mysql_fetch_array(resource result[,int result_type])
即它有两个参数:
resource result //resource类型(相当于指针)
int result_type //int类型,这个参数通常不用
返回的形式是数组型(array)。
注:类似的还有函数mysql_fetch_row(),用于逐行获取数据。mysql_fetch_object()函数也类似,但输出的时候必须写成指针的形式,例如$info->email,不能写成$info->[2]。
这三个函数的特点是,每执行一次获取一行记录(colunm),执行第二次则获取第二行记录…,例如:
$sql=mysql_query("select * from guest",$link);
显然,这里面有很多行记录,调用mysql_fetch_array($sql)一次获取一行记录:
[php]view plaincopyprint?
- $info=mysql_fetch_array($sql);echo$info[name];//输出第一行记录中的name值zollty 
- $info=mysql_fetch_array($sql);echo$info[name];//输出第二行记录中的name值 
- $info=mysql_fetch_array($sql);echo$info[name];//输出第三行记录中的name值 
- …… 
$info=mysql_fetch_array($sql);echo $info[name];//输出第一行记录中的name值zollty$info=mysql_fetch_array($sql);echo $info[name];//输出第二行记录中的name值$info=mysql_fetch_array($sql);echo $info[name];//输出第三行记录中的name值……
上面的写法很笨,可以简写为:
[php]view plaincopyprint?
- do{ 
- echo$info[name]; 
- }while($info=mysql_fetch_array($sql)) 
do{echo $info[name];}while($info=mysql_fetch_array($sql))或者
[php]view plaincopyprint?
- do{ 
- $info=mysql_fetch_array($sql); 
- if($info) 
- {echo$info[name];} 
- }while($info) 
do{	$info=mysql_fetch_array($sql);	if($info)	{echo $info[name];}}while($info)第一种写法更简洁,但是很难理解,第二种写法是C语言的写法,其逻辑很清晰。
5.使用mysql_num_rows()函数获取查询结果集中的记录数。
注:要想获取由insert,update,delete语句所影响到的数据行数,则必须使用mysql_affected_rows()函数。