PHP第9周讲义连接MySQL
PHP连接MySQLphp中都是用函数来操作相应的数据库,其常用函数包括:1、mysqli_connect:连接PHP到MySQL数据库的连接使用格式:mysqli_connect(“主机名”,”MySQL用户名”,”MySQL密码”)因为这不是MySQL命令,而是PHP程序语句,所以注:一般主机名为:localhost,MySQL用户名和密码的自行安装MySQL时可以设置,WAMP下用户名一般为:root,密码为空,即用法多数情况下为:mysqli_connect(“localhost”,”root”,”)2、为了程序严谨,要考虑到如果连接不成功时给出提示代码可进行如下设置$link = mysqli_connect("localhost","root","");if (!$link)exit ("连接失败!");为了不出现浏览器本身产生的错误的干扰,则用符号来抑制错误信息。即:$link = mysqli_connect("localhost","root","123");3、为了保证对中文字符的支持,最好输入以下代码语句mysqli_set_charset(连接变量,”utf8”);4、mysqli_select_db()连接MySQL中的子数据库。用法为:mysqli_select_db($link, “子数据库名”); 注:$link为前面mysql_connect赋给的变量名,如果用了另一变量名,则要做适当改变。实例:mysqli_select_db(“liuwu01”,$link);5、mysqli_query():执行相应的SQL语句(向数据库发送一条命令)注:SQL语句是用字符串的方式表示。$sql=” select * from info”;mysqli_query($link,$sql);利用以上知识我们已经可以在PHP中实现增、删、改的操作,那么如何实现“查”的功能,即在页面中显示指定记录或指定字段的内容。6、mysqli_fetch_array():从结果集中取得一行作为数组。在执行了sql命令:$sql = "select * from info01"$result = mysql_query($sql);后,mysql_query()只是产生一个将查询结果集,并赋给$result变量,但并不在页面中显示。我们可以用mysql_fetch_array()函数将查询到的结果放到一个数组中,即使用格式:$rs = mysql_fetch_array($result);此时就将结果放到一个数组$rs中,即$rs数组中就存放了某条记录的各字段内容,我们可以通过显示数组元素的方法将其显示出来。print_r($rs);运行后的显示结果为:即各数组元素就是相应字段的值。如果我们用语句:echo “姓名:”.$rs1;或echo “姓名:”.$rsname;,则页面显示:其余字段依此类推。那么在后面再加上一条$rs = mysql_fetch_array($result);此时则将结果集向后移动一个记录,即将记录指针向后移动一条。即语句:$rs = mysql_fetch_array($result);echo "姓名:".$rsname."<br>"$rs = mysql_fetch_array($result);echo "姓名:".$rsname."<br>"则显示:那么显然,我们使用循环语句即可在页面中输出整个数据库表。for ($i=1;$i<=3;$i+)$ result = mysql_fetch_array($obj);for($j=0;$j<=7;$j+)echo $ result $j;echo "<br>"则显示结果为:那么我们如果不知道有几条记录呢?我们可以使用以下语句:while($result = mysqli_fetch_array($obj)for($j=0;$j<=7;$j+)echo $ result $j;echo "<br>"即:当读到记录末尾时,mysql_fetch_array($result)的值为false,循环终止。mysqli_num_rows();获得select语句执行后的记录条数。mysqli_num_fields();获得select语句执行后的字段数量。例:显示代码:$result = mysqli_query($sql);$count_field= mysqli_num_ fields($result);$count_record= mysqli_num_rows($result);echo “这张表有”.$count_field.”个字段<br>”;echo “这张表有”.$count_record.”条记录”;的运行结果。mysqli_close($link);:关闭数据库。下面我们来讨论一下如何分页显示表中的记录:基本用法:select * from 表名 limit 整型数n1 整型数n2即显示从第n1条记录开始的n2 条记录,注意:n1是起始位置,n2是记录条数,不是终了位置。如对于某张数据库表,代码:$link = mysql_connect("localhost","root","") or die ("连接错误".mysql_error();mysql_select_db("liuwu01",$link);mysql_query("set names utf8");$sql = "select * from info"$result = mysql_query($sql);while ($rs = mysql_fetch_array($result)echo $rs0."t".$rs1."<br >"显示的结果为:即所有记录,如果将第4行改为:$sql = "select * from info limit 0,5"则其显示结果为:即从第1第记录开始的5条记录,此时可以不断改变两个数值,观察显示结果。所以分页显示记录的原理为:用总记录数(mysql_num_rows())除每页记录数(自定义)得到页数,而limit n1 n2中的n1即为:(当前页序号-1)*每页记录数可通过下表理解:假设20条记录,每页显示5条limit语句当前页数n1limit 0,51(1-1)*5limit 5,52(2-1)*5limit 10,53(3-1)*5limit 15,54(4-1)*5而当前页序号,则可以通过get方式从写在超链接的地址栏中获取,即:文件名?page=当前页数:来实现。其参考代码如下:(文件名:page.php)<?php$link = mysql_connect("localhost","root","") or die ("连接错误".mysql_error();mysql_select_db("liuwu01",$link);mysql_query("set names utf8");$pagesize=3; /每页显示3条记录$rowcount=0; /先初始化总记录数量$pagenow=1; /初始化当前页序号if(!empty($_GETpagenow)$pagenow=$_GETpagenow; /如果没有在地址栏中指定页数,则默认为第一页$pagecount=0; /初始化总页数$sql="select * from info"$result = mysql_query($sql);$rowcount=mysql_num_rows($result); /得到总记录数$pagecount=ceil($rowcount/$pagesize); /计算出页数$pre=($pagenow-1)*$pagesize;$sql1="select * from info limit $pre,$pagesize"$rs2=mysql_query($sql1);while ($row=mysql_fetch_array($rs2)echo $row0."t".$row1."<br >"?>至此为止,只在地址栏输入:php?pagenow=n1即可显示指定页下面我们在页面中制作链接数字for ($i=1;$i<=$pagecount;$i+)echo "<a href=pages.php?pagenow=".$i.">".$i." </a>"上机练习:制作一个简单的通讯页面,页面1可以输入姓名、电话号码、工作单位、QQ号等,填写后可以将这些数据输入到数据库中,并在页面2中显示所有记录,页面3可以通过输入姓名的方法查询记录,在页面4中如果页面3中的姓名不存在,则显示查无此人,如果有,则显示其电话号码和工作单位。