欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP MySQL 基本操作 & Navicat for MySQL

程序员文章站 2022-05-09 19:04:48
...

接下来是MySQL部分的内容,本来早就可以总结了的,但是一直没有空,现在都快忘了,不过也算是重新啊复习复习了。这部分的内容主要是PHP与数据库MySQL间的数据交互,所以要对数据库的相关知识要有一定了解才能更容易理解,当然这里的例子都是非常简单的,但虽然简单,如果对数据库的知识不了解,我还是建议先学习学习数据库的知识再回头学这个,会更简单。
当然还有最重要的一点是你电脑要安装有可运行的MySQL数据库。

1、连接MySQL数据库
注:我用的PHP是7.1.9,PHP 5.3以下的版本是没有mysqli()函数,用的是mysql()函数

<?php 
    // $conn = mysqli_connect("localhost", "root", "123", "mmorpg"); // 连接方式可用

    $servername = "localhost:3306";
    $username = "root";
    $password = "";
    // 连接MySQL数据库
    // 参数1 要连接的服务器地址,端口号也要正确(但默认端口号3306,默认端口号可不写)
    // 参数2 使用登陆名 默认“root”
    // 参数3 登陆密码 默认“”
    // 参数4 要连接的数据库名称(可选)

    // 上面的参数都要按照自己电脑实际的数据来写。
    $mysqli = new mysqli($servername, $username, $password);

    if ($mysqli->connect_error) {
        die("Connected failed:" . $mysqli->connect_error);
    } else {
        echo "数据库连接成功!";
    }
?>

2、创建数据库
这里假设上面连接部分的代码在单独的一个PHP文件中,如:conn.php 则

<?php 
    // 路径需填写正确
    require 'conn.php';

    // 创建数据库
    $sql = "CREATE DATABASE mmorpg";
    if ($mysqli->query($sql) === TRUE) {
        echo "数据库创建成功";
    } else {
        echo "Error creating database: " . $mysqli->error;
    }

    // 关闭数据库连接
    $mysqli->close();
 ?>

到这里,我们假设数据库已经存在了,我们可以把链接部分的放到一个文件里,方便后面在任何地方的调用。
创建app_config.php,内容如下:(这个可以当作你项目的配置文件,虽然现在看起来才这点内容,单独放一个文件没必要,但当你的项目慢慢变的复杂时,这样做就很方便了)

<?php 
    // 定义常量,常量名一般用大写,你可以在你项目的任何地方调用常量
    define("SERVERNAME", "localhost");
    define("USERNAME", "root");
    define("PASSWORD", "");
    define("DATABASENAME", "mmorpg");
    // 定义常量
 ?>

然后可以创建:conn.php

<?php 
    // 将配置文件引入
    require 'app_config.php';

    $mysqli = new mysqli(SERVERNAME, USERNAME, PASSWORD, DATABASENAME);
    if ($mysqli->connect_error) {
        die("Connected failed:" . $mysqli->connect_error);
    } else {
        echo "数据库" . DATABASENAME . "连接成功!";
    }

    // 设置编码,防止中文乱码
    mysqli_set_charset($mysqli, "utf8");
 ?>

这样,相连接数据库的时候,直接 require ‘conn.php’(引入路径必须正确)就可以直接用 $mysqli 操作数据库了,

3、创建表

<?php 
    require 'conn.php';
    // 判断表示否存在,存在则删除
    $sql_drop_tb = "DROP TABLE IF EXISTS test";
    // 建表语句
    $sql_create_tb = "create table test (
        id int primary key, 
        name varchar(255) character set utf8
    )ENGINE=MyISAM DEFAULT CHARSET=utf8;";

    if (!$mysqli->query($sql_drop_tb) || !$mysqli->query($sql_create_tb)) { // 新建表
        echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
    } else {
        echo "Table creation success!<br>";
    }

    $mysqli -> close();
 ?>

4、插入数据

<?php 
    require 'conn.php';

    // 定义函数
    function Insert($mysqli, $id, $name)
    {
        # 使用预处理语句
        $sql = "insert into test(id, name) values (?,?)";

        $stmt = mysqli_stmt_init($mysqli);
        // 预处理语句
        if (mysqli_stmt_prepare($stmt, $sql)) {
            // 绑定参数
            // 参数二:i 表示整数 s 表示字符串 d 表示双精度浮点数 b 表示布尔数, 对应插入字段的类型和个数
            mysqli_stmt_bind_param($stmt, 'is', $id, $name);

            // 执行插入
            if(mysqli_stmt_execute($stmt)) {
                echo "数据插入成功!". $mysqli -> affected_rows . "行受影响.";
            } else {
                echo "数据插入失败!" . $mysqli -> error;
            }
        }

        $stmt -> close();
    }
    // 调用函数
    Insert($mysqli, 7, "洋葱");

    # 插入多条数据
    $sql = "insert into test(id, name) values (1, '张三');";
    $sql .= "insert into test(id, name) values (2, 'Tom');";
    $sql .= "insert into test(id, name) values (3, '李四')"  

    if ($mysqli -> multi_query($sql) === TRUE) {
        echo "<br>新纪录插入成功!";
    } else {
        echo "Error:" . $sql . "<br>" . $mysqli -> error;
    }
?>

5、选择显示数据

<?php 
    require 'conn.php';

    // $sql = "select id, name from test";
    // $sql = "select id, name from test where id < 4";
    $sql = "select id, name from test order by id DESC"; // DESC 根据id降序排序 ASC 根据id升序排序

    $result = $mysqli -> query($sql);
    echo "<br>";
    if ($result -> num_rows > 0) {
        // 输出数据
        while ($row = $result -> fetch_assoc()) {
            // print_r($row);
            echo "ID:" . $row['id'] . " - Name:" . $row['name'] . "<br>";
        }
    } else {
        echo "0 结果";
    }

    $mysqli -> close();
 ?>

6、更新数据

<?php 
    require 'conn.php';

    $sql = "update test set name = '全蛋' where id = 4";

    $mysqli -> query($sql);
    if ($mysqli -> affected_rows) {
        echo "更新成功!" . $mysqli -> affected_rows . " 行受影响";
    } else {
        echo "更新失败!" . $mysqli -> affected_rows . " 行受影响";
    }

    $mysqli -> close();
 ?>

7、删除数据

<?php 
    require 'conn.php';

    $sql = "delete from test where name = '全蛋'";

    $mysqli -> query($sql);
    if ($mysqli -> affected_rows) {
        echo "删除成功!" . $mysqli -> affected_rows . " 行受影响";
    } else {
        echo "删除失败!" . $mysqli -> affected_rows . " 行受影响";
    }

    $mysqli -> close();
 ?>

这些其实都是很基础的,能不能用的好,还要看你对数据库是否熟悉,和你的封装技术,怎么把这些东西封装成一个更方便的使用的函数。
对于MySQL,这里没有多余的介绍,但如果你还是用小黑窗口进行相关操作的话,这里倒是有一个MySQL界面化的工具推荐。中文,内含**可直接**。(不过能坚持用小黑窗口也挺牛的!)
http://download.csdn.net/download/liangshilin/10014539
建立与MySQL Server的连接
PHP MySQL 基本操作 & Navicat for MySQL
功能很全
PHP MySQL 基本操作 & Navicat for MySQL

相关标签: php mysql