由于工作的原因,需要了解下bs模式下的读写数据库的流程,将试验过程梳理一下。
我采用的是phpstudy搭建数据库,mysql数据库已经搭建完成,名称为2018版本,如下图:
由于我前期安装过apache的服务,所以有些冲突,有些时候可能需要将mysql服务手动启动才可以正常连接,验证方法为从mysql管理器->phpmyadmin可以打开如下界面即为连接成功。
可以看到有多个数据库,我使用上面的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', '[email protected]')";
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', '[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Julie', 'Dooley', '[email protected]')";
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还没弄明白。弄好了在记录吧。