本文将详细介绍如何使用php连接MySQL并对数据库进行读取、写入数据等,具有一定的参考价值。

php连接数据库

<?php 
    header("content-Type: text/html; charset=utf-8");//字符编码设置 
    $servername = "localhost"; 
    $username = "数据库用户名"; 
    $password = "数据库密码"; 
    $dbname = "数据库名"; 
    
    // 创建连接 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    // 检测连接 
    if ($conn -> connect_error) { 
      die("Connection failed: " . $conn -> connect_error); 
    } else {
        echo "连接成功";
    }
    $conn -> close();
?>

注:

  1. 代码中第 4 行需要替换为自己的数据库用户名,一般为root或为项目专门设置的用户名
  2. 代码中第 5 行需要替换为自己的数据库用户名对应的密码,一般为root密码或为项目专门设置的用户名的密码
  3. 代码中第 6 行需要替换为自己要访问的数据库名

配置好php环境,如各项信息填写正确,访问网页将显示 连接成功 的提示:

否则将显示错误信息:

此为用户名或密码错误
此为数据库名填写错误(且没有恰好填成别的数据库导致找不到数据库)

php从数据库表中获取数据

我们在数据库中新建一个表,存放一些演示数据:

$sql = "SELECT * FROM `temp1`"; 
$result = $conn->query($sql);

通过上述两行代码,我们便可以将名为temp1的表中所有数据获取到,并储存在$result中;但此时不能直接输出$result

我们可以将数据转换成Array格式并使用print_r输出:

$sql = "SELECT * FROM `temp1`";
$result = $conn -> query($sql);
$arr = array();
// 输出每行数据
while($row = $result -> fetch_assoc()) {
    $count = count($row);//不能在循环语句中,由于每次删除row数组长度都减小
    for($i = 0; $i < $count; $i ++){
        unset($row[$i]);//删除冗余数据
    }
    array_push($arr, $row);
}
print_r($arr);

但平时使用过程中我们可能需要JSON格式的数据,可以使用json_encode将输出数据格式变为JSON格式:

$sql = "SELECT * FROM `temp1`"; 
$result = $conn -> query($sql); 
$arr = array(); 
// 输出每行数据 
while($row = $result -> fetch_assoc()) { 
    $count = count($row);//不能在循环语句中,由于每次删除row数组长度都减小 
    for($i = 0; $i < $count; $i ++){ 
        unset($row[$i]);//删除冗余数据 
    } 
    array_push($arr, $row); 
}
echo json_encode($arr, JSON_UNESCAPED_UNICODE);//json编码 
此时数据格式就变为了JSON格式

完整代码:

<?php 
    header("content-Type: text/html; charset=utf-8");//字符编码设置 
    $servername = "localhost"; 
    $username = "temp"; 
    $password = "123456"; 
    $dbname = "tempsql"; 
    
    // 创建连接 
    $conn =new mysqli($servername, $username, $password, $dbname); 
    // 检测连接 
    if ($conn -> connect_error) { 
      die("Connection failed: " . $conn -> connect_error); 
    } else {
        $sql = "SELECT * FROM `temp1`"; 
        $result = $conn -> query($sql); 
        $arr = array(); 
        // 输出每行数据 
        while($row = $result -> fetch_assoc()) { 
            $count = count($row);//不能在循环语句中,由于每次删除row数组长度都减小 
            for($i = 0; $i < $count; $i ++){ 
                unset($row[$i]);//删除冗余数据 
            } 
            array_push($arr, $row); 
        }
        echo json_encode($arr, JSON_UNESCAPED_UNICODE);//json编码 
        $conn->close();
    }
?>

php向数据库表中写入数据

我们可以使用URL中携带参数的方式将数据写入到数据库(注意!请不要在生产环境中使用此种方式!)

使用$_GET接收URL中携带的参数,需要事先定义好变量名 = $_GET["参数名"]

$key1 = $_GET["key1"];
$key2 = $_GET["key2"];
$key3 = $_GET["key3"];
$key4 = $_GET["key4"];

编写写入部分:

$sql = mysqli_query($conn, "INSERT INTO `temp1` (`key1`, `key2`, `key3`, `key4`) VALUES ('$key1', '$key2', '$key3', '$key4')");

携带参数执行上述代码即可成功写入数据库,但目前没有提示我们无法确认数据是否成功写入(不够人性化)、没有添加判断条件无法保证写入参数是否缺失,于是将代码进行修饰:

if ($key1 == '' || $key2 == '' || $key3 == '' || $key4 == '') {
    echo '<h1>参数错误!</h1>';
} else {
    $sql = mysqli_query($conn, "INSERT INTO `temp1` (`key1`, `key2`, `key3`, `key4`) VALUES ('$key1', '$key2', '$key3', '$key4')");
    if ($sql) {
        echo '<h1>操作成功!请手动关闭窗口:)</h1>';
    } else {
        echo '<h1>请不要重复添加!</h1>';
    }
}

注:当数据库没有设置主键或唯一约束时,代码5-9行的判断将一直为true,无法进行重复存入提示与限制重复存入!

我们将key1设为主键,并查看效果:

写入成功

此时我们可在数据库中看到新写入的数据:

因重复写入而写入失败(对应数据表需设置主键/唯一约束)
因参数不完整导致写入失败

完整代码:

<?php 
    header("content-Type: text/html; charset=utf-8");//字符编码设置 
    $servername = "localhost"; 
    $username = "temp"; 
    $password = "123456"; 
    $dbname = "tempsql"; 
    $key1 = $_GET["key1"];
    $key2 = $_GET["key2"];
    $key3 = $_GET["key3"];
    $key4 = $_GET["key4"];
    
    // 创建连接 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    // 检测连接 
    if ($conn -> connect_error) { 
        die("Connection failed: " . $conn -> connect_error); 
    } else {
        if ($key1 == '' || $key2 == '' || $key3 == '' || $key4 == '') {
            echo '<h1>参数错误!</h1>';
        } else {
            $sql = mysqli_query($conn, "INSERT INTO `temp1` (`key1`, `key2`, `key3`, `key4`) VALUES ('$key1', '$key2', '$key3', '$key4')");
            if ($sql) {
                echo '<h1>操作成功!请手动关闭窗口:)</h1>';
            } else {
                echo '<h1>请不要重复添加!</h1>';
            }
        }
        $conn -> close();
    }
?>

至此教程完成。

写在后面:截止到文章发布时我没有专门学习过php,故本文仅对php操作MySQL功能进行实现,文中如有错误欢迎指正,非常感谢୧(๑•̀⌄•́๑)૭

说点什么
你是我一生只会遇见一次的惊喜...
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...