如何在PHP中操作MySQL数据库

一、连接MySQL服务器
PHP操作MySQL数据库,首先要建立与MySQL服务器连接,函数语法如下:

mysqli mysqli_connect([string server [,string username[,string password[,string dbname[,int port[,string socket]]]]]])

mysqli_connect()函数的参数说明:

参数 说明
server MySQL服务器地址
username 用户名
password 密码
dbname 连接的数据库名称
port MySQL服务器使用的端口号
socket UNIX域 socket

例如:

<?php
	$host = "127.0.0.1";
	$usename = "root";
	$pwd = "123456";
	if(mysqli_connect($host,$usename,$pwd)){
		echo "<script type='text/javascript'>
			alert('数据库连接成功!');
		</script>";
	}else{
		echo "<script type='text/javascript'>
			alert('用户名或密码错误,数据库连接失败!!');
		</script>";
	}
?>

二、选择MySQL数据库
mysqli_connect()函数可以创建于服务器的连接,同时也要指定数据库名称,所以MySQLi扩展还提供了mysqli_select_db()函数来选择MySQL数据库,语法是:

bool mysqli_select_db(mysqli link,string dbname);

link为连接MySQL服务器后返回的连接标识。
dbname为指定要选择的数据库名称。
例如:

<?php
	$host = "127.0.0.1";
	$username = "root";
	$password = "123456";
	$db_name = "db_study";
	$conn = mysqli_connect($host,$username,$password);
	if(mysqli_select_db($conn,$db_name)){
		echo "<script type='text/javascript'>
			alert('数据库选择成功');
		</script>";
	}else{
		echo "<script type='text/javascript'>
			alert('数据库选择失败');
		</script>";
	}
?>

也可以不使用函数mysqli_select_db()来选择MySQL数据库,例如:

<?php
	$ser = "127.0.0.1";
	$use = "root";
	$pwd = "123456";
	$dbname = "db_study";
	$lem = mysqli_connect($ser,$use,$pwd,$dbname);
	if($lem){
		echo "数据库选择成功";
	}else{
		echo "数据库选择失败";
	}
?>

如果服务器中有 db_study 数据库,浏览器中会出现“数据库选择成功”。
三、执行SQL语句
对数据库中的表进行操作,通常使用 mysqli_query() 函数执行SQL语句,语法是:

mixed myqsli_query( mysql link,string query[,int resultmode]);

link为连接MySQL服务器后返回的连接标识。
query为所要执行的查询语句。
resultmode为可选参数,值为 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。
例如:
执行一个添加会员记录的SQL语句

$conn = mysqli_connect("127.0.0.1","root","123456","db_study");  //连接db_study数据库
$vip1 = mysqli_query($conn,"insert into tb_member values('mrsoft','123','[email protected]')");//执行一个添加会员记录的SQL语句

执行一个修改会员记录的SQL语句

 $conn = mysqli_connect("127.0.0.1","root","123456","db_study");  //连接db_study数据库
 $vip2 = mysqli_query($conn,"update tb_member set user='mrbook',pwd='111' where user='mrsoft'");//执行一个修改会员记录的SQL语句

执行一个删除会员记录的SQL语句

 $conn = mysqli_connect("127.0.0.1","root","123456","db_study");  //连接db_study数据库
 $vip3 = mysqli_query($conn,"delete from tb_member where user='mrbook'");//执行一个删除会员记录的SQL语句

执行一个查询会员记录的SQL语句

$conn = mysqli_connect("127.0.0.1","root","123456","db_study");  //连接db_study数据库
$vip4 = mysqli_query($conn,"select * from tb_member");//执行一个查询会员记录的SQL语句

执行一个选择db_study数据库的SQL语句

$conn = mysqli_connect("127.0.0.1","root","123456","db_study");  //连接db_study数据库
$vip5 = mysqli_query($conn,"use db_study");//执行一个选择db_study数据库的SQL语句

设置数据库的编码格式为utf-8

$conn = mysqli_connect("127.0.0.1","root","123456","db_study");  //连接db_study数据库
$vip6 = mysqli_query($conn,"set names utf8");//设置数据库的编码格式为utf-8

四、将结果集返回到数组中
使用mysqli_query()函数执行select语句时,如何将结果集返回到数组中,语法为:

array mysqli_fetch_array(resource result [,int result_type]);

result为资源类型的参数,要传入的是由mysqli_query()函数返回的指针。
result_type为可选参数,设置结果集数组的表述方式,值为:MYSQLI_ASSOC、MYSQLI_NUM、MYSQLI_BOTH
例如:
利用mysqli_fetch_array()函数读取db_study数据库中tb_study数据表中的数据。
第一步:编写 conn.php 文件,实现与MYSQL服务器连接,选择db_study数据库,并设置数据库的编码格式为utf8。

<?php
	$conn = mysqli_connect("127.0.0.1","root","123456","db_study")or die("连接数据库服务器失败!".mysqli_error());
	mysqli_query($conn,"set names utf8");
?>

第二步:创建 index.php文件,通过include_once语句包含数据库连接文件;
通过mysqli_query()函数执行查询语句,查询tb_study数据表中的数据;
通过 mysqli_fetch_array()函数将查询结果集中的数据返回到数组中;
通过while 循环语句循环输出数组中的数据。

<?php
	include_once("conn.php");//包含连接数据库文件
	$sele = mysqli_query($conn,"select * from tb_study");//执行查询语句
	while($myrow=mysqli_fetch_array($sele)){
?>
	<tr>
		<td align="center">
			<span class="style2"><?php echo $myrow[0];?></span>
		</td>
		<td align="center">
			<span class="style2"><?php echo $myrow[1];?></span>
		</td>
		<td align="center">
			<span class="style2"><?php echo $myrow[2];?></span>
		</td>
		<td align="center">
			<span class="style2"><?php echo $myrow['date'];?></span>
		</td>
		<td align="center">
			<span class="style2"><?php echo $myrow['type'];?></span>
		</td>
	</tr>
<?php
	}
?>

五、从结果集中获取一行作为对象
mysqli_fetch_array()函数来获取结果集中的数据,而mysqli_fetch_object()函数也是获取结果集中的数据,唯一不同是mysqli_fetch_object()函数返回的是对象。语法为:

mixed mysqli_fetch_object(resource result);

例如:
利用mysqli_fetch_object()函数读取db_study数据库中tb_study数据表中的数据。
第一步:创建数据库的连接文件conn.php。(和上面的实例相同)
第二步:编写index.php 文件,利用mysqli_query()函数执行SQL查询语句并返回结果集。
通过while语句和mysqli_fetch_object()函数循环输出查询结果集。

<?php
	include_once("conn.php");//包含连接数据库文件
	$sele = mysqli_query($conn,"select * from tb_study");//执行查询语句
	while($myrow=mysqli_fetch_object($sele)){
?>
	<tr>
		<td align="center">
			<span class="style2"><?php echo $myrow->name;?></span>
		</td>
		<td align="center">
			<span class="style2"><?php echo $myrow->pwd;?></span>
		</td>
		<td align="center">
			<span class="style2"><?php echo $myrow->qq;?></span>
		</td>
		<td align="center">
			<span class="style2"><?php echo $myrow->id;?></span>
		</td>
	</tr>
<?php
	}
?>

六、从结果集中获取一行作为枚举数组
语法:

mixed mysqli_fetch_row(resource result);

七、从结果集中获取一行作为关联数组

mixed mysqli_fetch_assoc(resource result);

八、获取查询结果集的记录数

int mysqli_num_rows(resource result);

九、释放内存
数据库操作完成后,需要关闭结果集,释放系统资源。语法为:

void mysqli_free_result(resource result);

mysqli_free_result()函数将释放所有与结果标识符 result 所关联的内存。该函数仅需要在考虑到返回很大的结果集时会占用多少内存时调用。在脚本结束后,所有关联的内存都会被自动释放。
十、关闭连接
完成对数据库的操作后,需要及时断开与数据库的连接并释放内存,否则会浪费大量的内存空间,在访问较大的web项目中,很可能会导致服务器崩溃。在MYSQL函数库中,使用mysqli_close()函数断开与MYSQL服务器的连接,该函数语法为:

bool mysqli_close(mysqli link);

例如:

<?php
	include_once("conn.php");//包含连接数据库文件
	$sele = mysqli_query($conn,"select * from tb_study");//执行查询语句
	while($myrow=mysqli_fetch_row($sele)){
?>
	<tr>
		<td align="center">
			<span class="style2"><?php echo $myrow[0];?></span>
		</td>
		<td align="center">
			<span class="style2"><?php echo $myrow[1];?></span>
		</td>
		<td align="center">
			<span class="style2"><?php echo $myrow[2];?></span>
		</td>
		<td align="center">
			<span class="style2"><?php echo $myrow[3];?></span>
		</td>
	</tr>
<?php
	}
	mysqli_free_result($sele);//释放内存
	mysqli_close($conn);//断开与数据库连接
?>

十一、连接与关闭MySQL服务器的最佳时机
MySQL服务器连接应该及时关闭,但并不是说没一次数据库操作之后都要立即关闭MySQL连接。
在book_query()函数中实现MySQL服务器的连接,在查询数据表中的数据之后释放内存并关闭MySQL服务器的连接,代码如下:

<?php
	function book_query(){
		$conn = mysqli_connect("127.0.0.1","root","123456","db_study") or die("连接数据库服务器失败!".mysqli_error());
		mysqli_query($conn,"set names utf8");
		$result = mysqli_query($conn,"select * from tb_study");
		while($myrow=mysqli_fetch_row($result)){
			echo $myrow[1]."";
			echo $myrow[2]."<br/>";
		}
		mysqli_free_result($result);
		mysqli_close($conn);
	}
	book_query();
	book_query();
?>

在上面的代码中,每调用一次book_query()函数,都会打开新的MySQL服务器和关闭MySQL服务器连接,耗费了服务器资源,这时可以将上述代码修改为:

<?php
	function book_query(){
		global $conn;
		$result = mysqli_query($conn,"select * from tb_study");
		while($myrow=mysqli_fetch_row($result)){
			echo $myrow[1]."";
			echo $myrow[2]."<br/>";
		}
		mysqli_free_result($result);
	}
	$conn = mysqli_connect("127.0.0.1","root","123456","db_study") or die("连接数据库服务器失败!".mysqli_error());
	mysqli_query($conn,"set names utf8");
	book_query();
	book_query();
	mysqli_close($conn);
?>

这样在多次调用book_query()函数时,仅打开一次MySQL服务器连接,节省了网络和服务器资源。

猜你喜欢

转载自blog.csdn.net/weixin_43860260/article/details/85531078