由于工作的原因,需要了解下bs模式下的读写数据库的流程,将试验过程梳理一下。

我采用的是phpstudy搭建数据库,mysql数据库已经搭建完成,名称为2018版本,如下图:

mysql页面管理Python mysql网页_php

由于我前期安装过apache的服务,所以有些冲突,有些时候可能需要将mysql服务手动启动才可以正常连接,验证方法为从mysql管理器->phpmyadmin可以打开如下界面即为连接成功。

mysql页面管理Python mysql网页_mysql_02

可以看到有多个数据库,我使用上面的test库。

在定义的根目录下(我这里是D:\phpstudy\PHPTutorial\WWW)新建立一个php文件。内容如下

<?php 
header("Content-Type:text/html;charset=utf-8");//如果没有这句话,后面的汉字显示是乱码;
//code = $_POST['code'];
$status = "";
$success = "";
$scookies = "";
 
//连接数据库  使用mysqli模式
$username="root";
$userpass="root";
$servername = "localhost";
$dbname = "test";
$conn = "";//数据库变量
//连接数据库函数,参数分别是数据库地址,用户名,密码,数据库的名称
function connectdb($server,$name,$pwd,$databasename)
{
    //创建连接 ,连接数据库,并判断是否连接成功
    $conn = new mysqli($server,$name,$pwd,$databasename);
    // 检测连接
    if ($conn->connect_error) 
    {
        die("link db failire: " . $conn->connect_error);
        echo "connect database [" . $server . " ]  failire <br/>";
        return $conn;
    } 
    else
    {
        echo "connect database [" . $server . "]  successful <br/>";
        return $conn;
    }
}
//检测表是否存在
function check_table_is_exist($sql,$find_table)
{
    $row=mysql_query($sql);
    $database=array();
    $finddatabase=$find_table;
    while ($result=mysql_fetch_array($row,MYSQL_ASSOC))
    {
    $database[]=$result['Database'];
    }
    unset($result,$row);
    mysql_close();
    /*开始判断表是否存在*/
    if(in_array($find_table,$database))
    {
    return true;
    }
    else
    {
    return false;
    }
}
//create new table
function createnewtable($conn)
{
    // 使用 sql 创建数据表
    $sql = "CREATE TABLE MyGuests (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    reg_date TIMESTAMP
    )";
     if ($conn->query($sql) == TRUE) 
     {
         echo  "Table MyGuests created successfully <br/>";
    } 
    else 
    {
        echo  "create database table error: " . $conn->error . " <br/>";
        
        return false;
    }
}
 
function insertrecord($conn,$tablename)
{    
    //echo -e "\r\n";
    //插入一条数据
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', 'john@example.com')";
        
    if ($conn->query($sql) == TRUE) 
    {        
        print "insert one record successful <br/>";
        
    } else 
    {
        echo  "Error: " . $sql . "<br/>" . $conn->error;
        echo  "\r\n";
    } 
    $sql="";
    //插入多条数据
    $sql .= "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Mary', 'Moe', 'mary@example.com');";
    $sql .= "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Julie', 'Dooley', 'julie@example.com')";
    if ($conn->multi_query($sql) == TRUE) {
        echo  "insert records successful. <br/>";
    } else {
        echo  "Error: " . $sql . "<br>" . $conn->error;
    }
    return true;    
}
 
function showtabledata($conn,$sql)
{
    $conn->query($sql);
}
function del_data($conn,$sql)
{
    print $sql . "</br>";
    if($conn->query($sql)==true)
    {
        echo "delete records successful </br>";
    }
    else
    {
        echo "delete records failire </br>";
    }
}
function show_alldata_fromtable($servername,$username,$userpass,$dbname,$tablename)
{
    $conn = mysqli_connect($servername,$username,$userpass,$dbname);
    if(mysqli_connect_errno($conn))
    {
        echo "connect mysql failed " . mysqli_connect_error();
        return;
    }
    
    echo "connect successful<br>";
    //第二步设置相应的字符编码
    //$mysqli->set_charset("utf8");
    //$setting = 'set names utf8';
    //mysqli_query($conn,$setting);
    //echo "query successful <br>" ;//. $conn . $setting;
    
    //第三步进行查询
    $sql = 'SELECT * FROM MyGuests';
    //执行查询语句,返回result为数据内容
    if($result = mysqli_query($conn,$sql))
    {
        //得到查询的记录的个数,
        $rowcount = mysqli_num_rows($result);
        echo "return {$rowcount} records <br>";
        
        echo 
        "<center>
            <table>
            <tr>
                <th>序号        </th>
                <th>姓          </th>
                <th>名          </th>
                <th>电子邮件    </th>
                <th>时间日期    </th>               
            </tr>
            </table>
        </center>";
        for($i = 0;$i <$rowcount;$i ++)
        {
            //按顺序一次读取一条记录,保存到sqldata中
            $sqldata = mysqli_fetch_assoc($result);
            echo     
            "<center>
            <table>            
            <tr>
                <td>".$sqldata['id']."</td>
                <td>".$sqldata['firstname']."</td>
                <td>".$sqldata['lastname']. "</td>
                <td>".$sqldata['email']. "</td>
                <td>".$sqldata['reg_date']. "</td>
            </tr>
            </table>
            </center>";
        }
 
        mysqli_free_result($result);
    }    
   
    //第五步把结果写到缓存文件
    $file = "sqlcache.txt";
    $msg = serialize($sqldata);
    //echo $msg;
    $fp = fopen($file,"w");
    fputs($fp,$msg);
    fclose($fp);
}
 
//连接数据库
$conn = connectdb($servername,$username,$userpass,$dbname);
createnewtable($conn);
$sql = "DELETE FROM myguests ";
//del_data($conn,$sql);
insertrecord($conn,'MyGuests');
//$conn->close();
show_alldata_fromtable($servername,$username,$userpass,$dbname,'',$conn);
$conn->close();
 
?>

注意 createnewtable 函数,可根据实际情况是否执行;

通过上面的文件,可以实现连接数据库,创建表单,插入单条、多条记录,删除记录,显示数据库的内容,将数据库内容序列化到文件,按一个简单的格式显示到网页中;

这里在网页上显示换行需要注意(我是要给新手),要使用<br>来实现,刚开始还试验  \n 或者\r\n,走了一个弯路,记录到这里。

下面开始考虑如何设计一个界面,具体用php设计还是使用js或者vue还没弄明白。弄好了在记录吧。