MySQL的ENUM和SET类型是用于在数据库中存储一组预定义的值的数据类型
首先,我们创建一个包含ENUM和SET类型的表。例如,我们创建一个名为user_info
的表,其中包含gender
(性别)和hobbies
(爱好)两个字段,分别使用ENUM和SET类型存储预定义的值。
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')
);
接下来,我们向表中插入一些数据。对于ENUM类型,我们可以直接传入值,如果传入的值不在预定义的范围内,将会插入空字符串(‘’)。
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 插入数据
$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();
?>
现在,我们从表中查询数据,并处理ENUM和SET类型的值。对于ENUM类型,我们可以使用$_POST['enum_field']
的方式获取值,而对于SET类型,我们需要遍历预定义的值集合来检查是否存在。
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 查询数据
$sql = "SELECT * FROM user_info";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出每行数据
while($row = $result->fetch_assoc()) {
$name = $row["name"];
$gender = $row["gender"];
$hobbies = $row["hobbies"];
echo "Name: " . $name . ", Gender: " . $gender . ", Hobbies: ";
// 处理ENUM类型
switch ($gender) {
case 'male':
echo "男性";
break;
case 'female':
echo "女性";
break;
case 'other':
echo "其他";
break;
default:
echo "";
}
// 处理SET类型
$hobbies_array = explode(',', $hobbies);
foreach ($hobbies_array as $hobby) {
switch ($hobby) {
case 'reading':
echo "阅读";
break;
case 'traveling':
echo "旅行";
break;
case 'sports':
echo "运动";
break;
case 'music':
echo "音乐";
break;
}
}
echo "<br>";
}
} else {
echo "0 结果";
}
$conn->close();
?>
这样,我们就可以在PHP中使用MySQL的ENUM和SET类型了。注意,在实际应用中,为了防止SQL注入,建议使用预处理语句(prepared statements)来插入和查询数据。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。