首页
学习
活动
专区
圈层
工具
发布

mysqli制作留言板

基础概念

mysqli 是 PHP 中的一个扩展,用于与 MySQL 数据库进行交互。它提供了面向对象和过程式的 API,使得开发者可以方便地执行 SQL 查询、处理结果集、管理事务等。

优势

  1. 性能:相比 mysql 扩展,mysqli 提供了更好的性能。
  2. 安全性:支持预处理语句,可以有效防止 SQL 注入攻击。
  3. 功能丰富:提供了事务处理、存储过程调用、多语句执行等功能。
  4. 面向对象:提供了面向对象的接口,使得代码更加清晰和易于维护。

类型

mysqli 主要有两种使用方式:

  1. 过程式:使用函数调用来执行 SQL 语句。
  2. 面向对象:使用类和对象的方法来执行 SQL 语句。

应用场景

mysqli 广泛应用于各种需要与 MySQL 数据库交互的 PHP 应用中,例如:

  • 网站后台管理系统
  • 电子商务平台
  • 社交网络
  • 博客系统

示例代码

以下是一个简单的使用 mysqli 制作留言板的示例:

数据库设计

代码语言:txt
复制
CREATE TABLE `messages` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `name` VARCHAR(255) NOT NULL,
    `message` TEXT NOT NULL,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

PHP 代码

代码语言:txt
复制
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "message_board";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

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

// 插入留言
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = $_POST['name'];
    $message = $_POST['message'];

    $stmt = $conn->prepare("INSERT INTO messages (name, message) VALUES (?, ?)");
    $stmt->bind_param("ss", $name, $message);
    if ($stmt->execute()) {
        echo "留言成功";
    } else {
        echo "留言失败: " . $stmt->error;
    }
    $stmt->close();
}

// 查询并显示留言
$sql = "SELECT id, name, message, created_at FROM messages ORDER BY created_at DESC";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "<div>";
        echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Message: " . $row["message"]. " - Time: " . $row["created_at"]. "<br>";
        echo "</div>";
    }
} else {
    echo "没有留言";
}

$conn->close();
?>

HTML 表单

代码语言:txt
复制
<!DOCTYPE html>
<html>
<head>
    <title>留言板</title>
</head>
<body>
    <h1>留言板</h1>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name"><br><br>
        <label for="message">留言:</label>
        <textarea id="message" name="message"></textarea><br><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

可能遇到的问题及解决方法

  1. 连接失败
    • 确保数据库服务器正在运行。
    • 检查数据库连接参数(如主机名、用户名、密码、数据库名)是否正确。
    • 确保 PHP 的 mysqli 扩展已启用。
  • SQL 注入
    • 使用预处理语句(如示例代码中的 preparebind_param)来防止 SQL 注入。
  • 数据插入失败
    • 检查 SQL 语句是否正确。
    • 检查是否有足够的权限执行插入操作。
    • 查看错误信息(如示例代码中的 $stmt->error)以获取更多信息。

参考链接

通过以上内容,你应该能够了解如何使用 mysqli 制作一个简单的留言板,并解决一些常见问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句

    所以在这里,我们就不再多讲理论方面的东西了,直接上代码来看看 MySQLi 中这两大特性与 PDO 在使用上的区别。 事务处理 首先,我们还是要让 MySQLi 对于错误的语句也报出异常来。...而在 MySQLi 中,我们则需要指定 MySQLi_Driver 对象中的报错属性为抛出异常,很明显,MySQLi_Driver 就是 MySQLi 的驱动对象。...// 使用异常处理错误情况 $driver = new mysqli_driver(); $driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT...try { // 开始事务 $mysqli->begin_transaction(); $mysqli->query("insert into tran_innodb (name...12)"); // 不存在的表 // 提交事务 $mysqli->commit(); } catch (Exception $e) { // 回滚事务 $mysqli

    3.8K00

    留言板asp源码下载_网页留言板源码

    用ASP+access+FrontPage实现留言板有几种方法??只需要写出简单思路,. 首先,留言页面。其次,留言数据处理页面,该页面把数据插入到数据库中。再次,从数据库中选取数据出来。...哪位高手 可以帮我做个简单初学者ASP留言板! 明天早晨急需 ! 扣扣 。...语句就可以 很简单的~有带一个数据库~无需登陆就可以留言的留言板~登陆了会显示用户。...谁会做网络技术留言板. 包括毕业论文+设计+答辩. 请会的人帮帮忙! 谢谢!....成型的留言板主要有用户注册,发言,显示留言三块构成,我们先不考虑用户的问题,只考虑发言和显示两块。 当然留言板是要有数据库的支持,我们先以access进行讲.

    00

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作 就像 PDO 中的 PDO_Statment 对象一样,MySQLI_STMT 对象也是一个预处理语句所形成的对象,专门用来操作 MySQLi...; $username='mysqli_username'; $password='mysqli_password'; $salt = 'mysqli_salt'; $stmt->bind_param...; $id = 's'; $username='mysqli_username'; $password='mysqli_password'; $salt = 'mysqli_salt'; $stmt-...可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。...测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/8.PHP中的MySQLi扩展学习(五)MySQLI_STMT

    3.4K10
    领券