从留言板开始做网站(五)——表单提交(数据插入)

这篇我们将说明如何将表单提交的数据插入到数据库中。

我们在send.php中输入以下代码:

<?php
// import the connection file
require "conn.php";

// insert the data to the table
$user_name = $_POST["user_name"];
$user_mes = $_POST["user_mes"];
$send_time = date("Y-m-d H:i:s");
$sql = "INSERT INTO message (user_name, user_mes, send_time)
VALUES ('$user_name', '$user_mes', '$send_time')";

// check it
if($conn->query($sql) === true) {
    echo "数据插入成功";
}else {
    echo "数据插入失败" . $conn->error;
}
// close the datebase connection
$conn->close();
 ?>
require "conn.php";
导入数据库连接文件,与require相似的是include,如果导入的文件不存在,前者会报错,不执行程序,后者不会报错继续执行程序。

$_POST['XXX']; 接受以post方式传送的数据

date("Y-m-d h:i:s"); 将时间格式化为年-月-日  时-分-秒。我之前用的是getdate(),这个返回的是一个时间戳,一长串数字。还有后面的H,大写的显示为24小时制,小写的为12小时制。

$sql = "INSERT INTO message (user_name, user_mes, send_time)
VALUES ('$user_name', '$user_mes', '$send_time')";
将表单提交的数据插入到message数据表,VALUES左边的是字段名,右边的是接收到的数值。

现在我们在留言板首页中键入留言信息


结果为:

全是乱码,好吧,这应该是编码的问题。先来解决页面的编码问题

在文件导入上方插入代码

header("Content-Type:text/html;charset=utf-8");
然后在发送留言查看结果:

页面可以正常显示中文了。然后再来处理数据库中的乱码问题。

我尝试了手动改动数据库和数据表的排序规则,还有字段的排序规则,改成utf8_general_ci,结果还是乱码,后来百度了下,在send.php 插入数据前加入了一条代码:

$conn->query("set names 'utf8'");
终于插入的数字变为了中文,不再是乱码。


想想如果每次插入数据库都要运行一遍那条代码,心里总是很不舒服的,所以我准备将数据库重新创建,创建的时候附带上编码的设置。

<?php
header("Content-Type:text/html;charset=utf-8");
$servername = "localhost";
$username = "root";
$password = "";
// create the connection
$conn = new mysqli($servername, $username, $password);

// check the connection
if ($conn->connect_error) {
    die("连接失败:" . $conn->connect_error);
}

// create a new database and table
$sql = "CREATE DATABASE messageboard DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
if ($conn->query($sql)) {
    $dbname = "messageboard";
    $conn1 = new mysqli($servername, $username, $password, $dbname);
    $sql1 = "CREATE TABLE message (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    user_name VARCHAR(20) NOT NULL,
    user_mes TEXT NOT NULL,
    send_time TIMESTAMP
    )";
    if($conn1->query($sql1)) {
        echo "数据库和数据表创建成功";
    }else {
        echo "数据表创建失败";
    }
}else {
    echo "数据库创建失败";
}
 ?>
在新建数据库的时候增加了排序规则的设定,创建成功后,再次进行留言测试,数据库内显示的为正常的中文。

这个时候我发现时间对不上,这就需要设置时区。在send.php顶部添加代码:

date_default_timezone_set('PRC');

id1和id2是添加之前的,id3则是添加之后的结果。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值