PHP -- 数据库访问

Posted ~梅梅~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP -- 数据库访问相关的知识,希望对你有一定的参考价值。

一、过时方法php5以前的版本用的):用函数链接数据库,相当于面向过程的方式

//设置页面编码格式

 header("content-type:text/html;charset=utf-8");

1)生成链接    

$db_connect = $mysql_connect("localhost","root","517")   // localhost:服务器的地址; root:数据库的用户名;  517:数据库密码

2)选择操作的数据库

mysql_select_db("mydb",$db_connect);      // db: 代表数据库,是datebase的简写 ;  $db_connect:表示用哪一个链接数据库

3)写sql语句

$sql = "select * from Info ";

4)执行sql语句

$result = mysql_query($sql);

5)处理查询结果

$row = mysql_fetch_row($result);

备注:如果输出内容出现乱码,可以在开始处加上 header("content-type:text/html;charset=utf-8");

 

二、面向对象的方式

1.生成链接对象,需要四个参数

$db = new mysqli("localhost","root","517","mydb");  

//mysqli 是对mysql的扩展 // localhost:服务器的地址; root:数据库的用户名;  517:数据库密码; mydb:要链接的数据库

2.判断是否连接成功

!mysqli_connect_error() or die("链接失败");  //die相当于echo"链接失败";  exit;  //exit表示退出整个程序

3.写sql语句

$sql = "select * from Info ";

4.执行sql语句

$result = $db->query($sql);  //可以输出一下$result看下它的类型,var_dump($result);输出的是一个Object(对象).

5.操作结果集数据

1)

//$row = $result->fetch_row();   [ $result->fetch_row(); 每执行一次都会取出不同的一条数据 //fetch_row  表示取出一条数据  ]

//fetch_row();返回的是索引数组

while($row = $result->fetch_row())

{

   print_r($row);

  echo"<br / >";

}

2)或者

$attr = $resullt->fetch_all();  //返回$result结果集里的所有数据,返回的是一个二维数组.

3)或者

$result->fetch_assoc();  //返回一条数据,返回的是关联数组

 

》》练习的代码(通过链接数据库查出数据,做成表格)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<?php 
    //造链接对象
    $db =new MySQLi("localhost","root","517","mydb");
    //判断是否出错
    !mysqli_connect_error() or die("连接失败");
    //写sql语句
    $sql = "select * from  Info";
    //执行sql语句
    $result = $db->query($sql);
    //处理查询数据并显示
    echo "<table width=‘100%‘ border=‘1‘ cellspacing=‘0‘ cellpadding=‘0‘>";
    
    echo"<tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td><td>生日</td></tr>";
    while($row = $result->fetch_row())
    {
        //处理性别(也可以用函数的方法处理)
        $sex = $row[2]?"男":"女";
        //处理民族
        $name = ShowNation($db,$row[3]);
        echo"<tr><td>{$row[0]}</td><td>{$row[1]}</td><td>{$sex}</td><td>{$name}</td><td>{$row[4]}</td></tr>";
    }
    echo"</table>";
    
    //做函数处理民族,函数的功能是传入一个代号返回一个名称
    function ShowNation($db,$code)
    {
        //写sql语句
        $sql = "select Name from Nation where Code=‘{$code}‘";
        //执行sql语句
        $result =$db->query($sql);
        $jieguo = $result->fetch_row();
        return $jieguo[0];
    }
 
?>

</body>
</html>

》》查询数据库,用php实现下拉列表

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<select>
<?php

    //造链接对象
    $db =new MySQLi("localhost","root","517","mydb");
    //判断是否出错
    !mysqli_connect_error() or die("连接失败");
    //写sql语句
    $sql = "select * from  Nation";
    //执行sql语句
    $result = $db->query($sql);
    //处理数据并显示
    $attr = $result->fetch_all();  //返回的二维数据
    
    //遍历二维数组显示出来
    for($i=0;$i<count($attr);$i++)
    {
        
        list($code,$name) = $attr[$i];
        echo"<option value=‘{$code}‘>{$name}</option>";
    }

?>
</select>
</body>
</html>

 

备注:每个数据库都有一个用户名,SqlServer里面的超级管理员叫做SA(Super Administrator的简写),指拥有数据库管理最高权限的用户;mysql的超级管理员是root。

执行的sql语句,如果是增删改语句,执行之后返回的结果是true或者false.

快捷键:选中需要移动的代码,按Tab键可以向右移动,shift+Tab:可以向左移动

以上是关于PHP -- 数据库访问的主要内容,如果未能解决你的问题,请参考以下文章

php数据访问

仅使用PHP导出MySQL数据库[关闭]

人工智能风口下,PHP已过时,Java地位也不保了!

PHP数据访问(面向对象方式:mysqli类)

为 PHP 5.4 编写 C++ 扩展,示例代码已过时

哪个更糟?多一个数据库访问权限还是一个过时的值?