文章目录
PHP操控MySQL
在php中使用mysqli 与MySQL 建立连接
查看phpinfo.php页面,发现默认是开启mysqli支持的
登录phpMyAdmin数据库管理页面[root/root]
创建数据库unable
新建数据库表users,存储会员信息
创建成功
插入数据
查看数据
创建表messages,存储留言信息
建立连接:mysqli_connect()函数
参数:IP地址、用户名、密码、数据库名
返回一个连接对象
mysqli_connect_error()函数:返回连接失败的错误信息
mysqli_close(conn)函数:关闭数据库连接,conn:连接对象
<meta charset = "utf-8">
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "unable";
// 创建连接
$conn = mysqli_connect($servername, $username, $password,$dbname);
// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "连接成功";
mysqli_close($conn);//关闭数据库连接
?>
失败则会返回错误信息并结束程序
执行sql语句:mysqli_query()函数
参数:连接对象,sql语句,返回一个对象
mysqli_error(conn):sql语句执行的错误信息,conn:连接对象
mysqli_fetch_assoc(results):从对象中获取值,以关联数组的方式返回,一次只能拿一个
查询数据库内容
<meta charset = "utf-8">
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
// 添加sql语句
$sql = "select * from users";
if ($results = mysqli_query($conn, $sql)) {
while ($result = mysqli_fetch_assoc($results)){
//从对象中获取属性,以关联数组的方式返回,一次只能拿一个数据
var_dump($result);
}
} else {
echo "错误: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
精简树洞网站的实现
大概思路:设计两个数据库表,一个users用来存储用户信息,一个messages用来存储留言信息。具体创建参考上面。
设计目的:孤独症患者可以在里面发一些自己的心里话,比如:感情问题。(手动狗头)哈哈哈哈哈哈哈。
网站首页:index.php
是查看留言的地方,没有登陆时具有注册和登录两个选项,用户不用进行登录就可以查看留言,但是登录之后才可以进行留言,有请留言这个选项,还可以点击用户名返回个人中心
<?php
include "./member/connection.php";
?>
<html>
<head>
<title>unable树洞首页</title>
<meta charset="utf-8">
</head>
<body>
<h1>欢迎来到unable树洞</h1>
<?php
if(isset($_COOKIE["name"])) {
echo "欢迎您!"."<a href='./member/index.php'>".$_COOKIE["name"]."</a>"." ";
echo "<a href='./addmsg.php'>请留言</a>";
}else{
echo "<a href='./member/login.php'>登录</a>"." ";
echo "<a href='./member/register.php'>注册</a>";
}
echo "<hr>";
$sql = "select * from messages";
if ($results = mysqli_query($conn,$sql)) {
if (mysqli_num_rows($results) > 0){
echo "<table border=2>";
echo "<tr><td>ID</td><td>TITLE</td><td>AUTHOR</td></tr>";
while ($result = mysqli_fetch_assoc($results)) {
$id = $result['id'];
echo "<tr><td>{$id}</td><td> <a href='./showmsg.php?id={$id}'>{$result['title']}</a> </td><td>{$result['name']}</td></tr>";
}
echo "</table>";
}else{
echo "暂无留言内容";
}
}else{
echo mysqli_error($conn);
}
?>
</body>
</html>
<?php
mysqli_close($conn);
?>
注册页面:register.php
用户名不能重复,两次密码输入必须一致
<html>
<head>
<title>unable树洞注册</title>
<meta charset="utf-8">
</head>
<body>
<h1>欢迎注册unable树洞</h1>
<form action="./addUser.php" method="post">
用户名:<input type="text" name="userName"><br>
密码:<input type="password" name="userPass1"><br>
确认密码:<input type="password" name="userPass2"><br>
<input type="submit" name="userSubmit" value="注册">
</form>
</body>
</html>
个人中心页面:index.php
登录成功之后可以跳转到个人中心页面,可以查看自己的基本信息,修改头像,注销登录,返回首页
<html>
<head>
<title>unable树洞---个人中心</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href='../index.php'>unable树洞---个人中心</a></h1>
<?php
include "./connection.php";
if (isset($_COOKIE["name"])) {
$userName = $_COOKIE["name"];
$sql = "select * from users where name ='". $userName."'";
if ($results = mysqli_query($conn,$sql)) {
if (mysqli_num_rows($results) > 0) {
$result = mysqli_fetch_assoc($results);
echo "<hr>"."欢迎您,".$result['name']."<a href='./logout.php'>注销登录</a>";
echo "<hr>";
echo "您的头像"."<img src='".$result['photo']."'>";
echo "<a href='./update.php'>修改头像</a>"."<br>";
echo "帐户余额:".$result["money"]."<span style='color:red'>请联系管理员</span>";
}else{
echo "该用户不存在";
}
}
}else{
echo "<a href='./login.php'>请登录</a>";
}
?>
<hr>
</body>
</html>
<?php
mysqli_close($conn);
?>
连接数据库功能:connection.php
将连接数据库的代码进行封装,方便利用
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "unable";
if (!$conn = mysqli_connect($servername,$username,$password,$dbname)) {
die(mysql_connect_error());
}
mysqli_set_charset($conn,'utf-8');//设置编码
?>
注册功能:addUser.php
注册功能的具体实现,注册成功后会设置cookie信息
<meta charset="utf-8">
<?php
include "./connection.php";
$userName = $_POST['userName'];
$userPass = $_POST["userPass1"];
if (isset($_POST["userSubmit"])) {
if($_POST["userPass1"] === $_POST["userPass2"] && isset($_POST["userPass1"]) && isset($_POST["userPass2"]) && isset($_POST["userName"])) {
$sql = "insert into users(name,password) values('".$userName."','".md5($userPass)."')";
if (!mysqli_query($conn,$sql)) {
echo "用户名重复:"."<a href='./register.php'>返回注册页面</a>";
}else{
echo "注册成功,<a href='./index.php'>返回个人中心</a>";
setcookie("name","$userName",time()+3600,"/");
}
}else{
echo "信息错误,请重新输入:"."<a href='./register.php'>返回注册页面</a>";
}
}else{
header('Location:./register.php');//重定向
}
?>
<?php
mysqli_close($conn);
?>
更新头像功能:update.php
更新头像的具体实现,上传图片
<meta charset="utf-8">
<?php
include "./connection.php";
if (isset($_POST['userSubmit'])) {//如果是在表单提交的
$userName = $_COOKIE['name'];
$file_path = $_FILES["userFileUp"]["tmp_name"];//获取缓存路径
$path = ".\\images\\".$_FILES["userFileUp"]["name"];//设置文件的保存路径
if (move_uploaded_file($file_path, $path)) {
$path = mysqli_real_escape_string($conn,$path);
$sql = "update users set photo='".$path."'where name='".$userName."'";
if (mysqli_query($conn,$sql)) {
echo "图片上传成功,<a href='./index.php'>返回个人中心</a>";
}else{
die(mysqli_error($conn));
}
}else{
echo "图片上传失败";
}
}else{
$html = <<<HTML
<meta charset="utf-8">
<form action="" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="userFileUp">
<input type="submit" name="userSubmit" value="提交">
</form>
HTML;
echo $html;
}
?>
<?php
mysqli_close($conn);
?>
登录页面:login.php
登录功能的具体实现
<meta charset="utf-8">
<?php
include "./connection.php";
if (isset($_POST["userSubmit"])) {
$userName = $_POST["userName"];
$userPass = $_POST["userPass"];
$sql = "select * from users where name = '".$userName."'and password = '".md5($userPass)."'";
if ($results = mysqli_query($conn,$sql)) {
if (mysqli_num_rows($results) > 0) {
setcookie("name","$userName",time()+3600,"/");
echo "登录成功,<a href='./index.php'>进入个人中心</a>";
}else{
echo "用户名或密码错误,<a href='./login.php'>请重新登录</a>";
}
}else{
die(mysqli_error($conn));
}
}else{
$html = <<<HTML
<meta charset="utf-8">
<form action="" method="post">
用户名:<input type="text" name="userName"><br>
密码:<input type="password" name="userPass"><br>
<input type="submit" name="userSubmit" value="登录">
</form>
HTML;
echo $html;
}
?>
<?php
mysqli_close($conn);
?>
注销登录功能:logout.php
注销登录的具体实现
<?php
if (setcookie('name',$_COOKIE["name"],time()-3600,"/")) {
header("Location:../index.php");//直接重定向到首页
}
?>
留言功能:addmsg.php
留言功能的具体实现,点击请留言之后会跳转到这个页面,输入之后点击提交即可成功,返回首页进行查看
<html>
<head>
<title>unable论坛</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="./index.php">unable论坛</a></h1>
</body>
</html>
<?php
include "./member/connection.php";
if ($_COOKIE['name']) {
$html = <<<HTML
<form method="post">
标题:<input type="text" name="title">
<br><br>
内容:<textarea name="content"></textarea>
<input type="submit" name="submit" value="提交">
</form>
HTML;
echo $html;
if (isset($_POST['submit']) && isset($_POST['title'])) {
$username = $_COOKIE['name'];
$title = $_POST['title'];
$content = $_POST['content'];
$sql = "insert into messages(`name`,`title`,`content`) values('".$username."','".$title."','".$content."')";
if ($results = mysqli_query($conn,$sql)) {
echo "留言成功,<a href='./'>返回首页</a>";
}else{
echo mysqli_error($conn);
}
}
}else{
echo "<a href = './index.php'>请登录</a>";
}
?>
<?php
mysqli_close($conn);
?>
查看留言内容页面:showmsg.php
在首页只是显示title信息,点击title信息可以查看里面的内容,就是这个页面
<html>
<head>
<title>unable树洞</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="./index.php">unable树洞</a></h1>
</body>
</html>
<?php
include "./member/connection.php";
if (isset($_GET["id"])) {
$id = $_GET["id"];
$sql = "select * from messages where id=".$id;
if ($results = mysqli_query($conn,$sql)) {
$result = mysqli_fetch_assoc($results);
echo $result['name'].":".$result['title']."<hr>";
echo $result['content'];
}else{
echo mysqli_error($conn);
}
}
?>
<?php
mysqli_close($conn);
?>
进行功能测试:
- 注册:
进入首页,会显示已有的留言内容
点击注册
点击注册
注册成功之后点击返回个人中心
点击标题可以返回首页(注意首页变化)
点击用户名可以返回个人中心
点击修改头像可以上传头像
选择文件后提交
返回个人中心
选择注销登录,会直接跳转到首页
- 登录
点击登录
使用刚才注册好的用户名和密码,登录
进入个人中心,发现没啥变化
- 留言
点击标题,进入首页
点击请留言,进入留言页面(打广告小心直接被叉出去哦~)
提交留言信息
返回首页查看
点击title查看内容
点击标题可以返回首页
PS:还可以查看他人留言哦,不登陆也能查看~
ok,大概的逻辑就是这样,当然还是有不足的地方,欢迎各位小伙伴一起讨论交流~