溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

MySQL的ENUM與SET類(lèi)型在PHP中的使用

發(fā)布時(shí)間:2024-09-22 12:32:25 來(lái)源:億速云 閱讀:81 作者:小樊 欄目:編程語(yǔ)言

MySQL的ENUM和SET類(lèi)型是用于在數(shù)據(jù)庫(kù)中存儲(chǔ)一組預(yù)定義的值的數(shù)據(jù)類(lèi)型

  1. 創(chuàng)建表結(jié)構(gòu):

首先,我們創(chuàng)建一個(gè)包含ENUM和SET類(lèi)型的表。例如,我們創(chuàng)建一個(gè)名為user_info的表,其中包含gender(性別)和hobbies(愛(ài)好)兩個(gè)字段,分別使用ENUM和SET類(lèi)型存儲(chǔ)預(yù)定義的值。

CREATE TABLE user_info (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    gender ENUM('male', 'female', 'other'),
    hobbies SET('reading', 'traveling', 'sports', 'music')
);
  1. 插入數(shù)據(jù):

接下來(lái),我們向表中插入一些數(shù)據(jù)。對(duì)于ENUM類(lèi)型,我們可以直接傳入值,如果傳入的值不在預(yù)定義的范圍內(nèi),將會(huì)插入空字符串(‘’)。

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 創(chuàng)建連接
$conn = new mysqli($servername, $username, $password, $dbname);

// 檢查連接
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
}

// 插入數(shù)據(jù)
$name = "John";
$gender = "male";
$hobbies = "reading,traveling";

$sql = "INSERT INTO user_info (name, gender, hobbies) VALUES ('$name', '$gender', '$hobbies')";

if ($conn->query($sql) === TRUE) {
    echo "新記錄插入成功";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>
  1. 查詢(xún)數(shù)據(jù):

現(xiàn)在,我們從表中查詢(xún)數(shù)據(jù),并處理ENUM和SET類(lèi)型的值。對(duì)于ENUM類(lèi)型,我們可以使用$_POST['enum_field']的方式獲取值,而對(duì)于SET類(lèi)型,我們需要遍歷預(yù)定義的值集合來(lái)檢查是否存在。

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 創(chuàng)建連接
$conn = new mysqli($servername, $username, $password, $dbname);

// 檢查連接
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
}

// 查詢(xún)數(shù)據(jù)
$sql = "SELECT * FROM user_info";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 輸出每行數(shù)據(jù)
    while($row = $result->fetch_assoc()) {
        $name = $row["name"];
        $gender = $row["gender"];
        $hobbies = $row["hobbies"];

        echo "Name: " . $name . ", Gender: " . $gender . ", Hobbies: ";

        // 處理ENUM類(lèi)型
        switch ($gender) {
            case 'male':
                echo "男性";
                break;
            case 'female':
                echo "女性";
                break;
            case 'other':
                echo "其他";
                break;
            default:
                echo "";
        }

        // 處理SET類(lèi)型
        $hobbies_array = explode(',', $hobbies);
        foreach ($hobbies_array as $hobby) {
            switch ($hobby) {
                case 'reading':
                    echo "閱讀";
                    break;
                case 'traveling':
                    echo "旅行";
                    break;
                case 'sports':
                    echo "運(yùn)動(dòng)";
                    break;
                case 'music':
                    echo "音樂(lè)";
                    break;
            }
        }

        echo "<br>";
    }
} else {
    echo "0 結(jié)果";
}

$conn->close();
?>

這樣,我們就可以在PHP中使用MySQL的ENUM和SET類(lèi)型了。注意,在實(shí)際應(yīng)用中,為了防止SQL注入,建議使用預(yù)處理語(yǔ)句(prepared statements)來(lái)插入和查詢(xún)數(shù)據(jù)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI