php - 如何从 Php 在 Mysql 上插入枚举数据?
问题描述
我在 mysqlsql 上创建了一个枚举,就像这个 enum('male', 'female') 但是当我想插入数据时,我在 enum 列上有一些错误。我分享了我的代码和错误消息。顺便说一句,我正在使用这个类 https://github.com/tommyknocker/pdo-database-class
This is error message.
D:\wamp64\www\newchat\register_control.php:30:
array (size=3)
0 => string '01000' (length=5)
1 => int 1265
2 => string 'Data truncated for column 'gender' at row 1' (length=43)
male
HTML
<div class="input-group form-group">
<label class="radio">Male
<input type="radio" checked="checked" name="gender" value="male" />
<span class="radiocheckmark"></span>
</label>
<label class="radio">Female
<input type="radio" name="gender" value="female" />
<span class="radiocheckmark"></span>
</label>
</div>
PHP
// Get data from FROM
$name =$_POST["name"];
$surname =$_POST["surname"];
$email =$_POST["email"];
$username =$_POST["username"];
$password =$_POST["password"];
$password2 =$_POST["password2"];
$gender =$_POST["gender"];
// Insert data in db
$data = [
'name' => 'name',
'surname' => 'surname',
'email' => 'email',
'username' => 'username',
'gender' => 'gender',
'password' => 'password'
];
$id = $db->insert('users', $data);
if ($id) {
echo 'user was created. Id=' . $id;
echo $gender;
} else {
var_dump($db->getLastError());
echo $gender;
}
解决方案
这是一个工作示例(全部在名为 的程序中完成so.php
)
<html><head><title>Insert gender</title></head></body>
<form action="so.php" method="post">
Name:<input type="text" name="name"/><br/>
Surname:<input type="text" name="surname" /><br/>
Email:<input type="text" name="email" /><br/>
Username:<input type="text" name="username" /><br/>
Password:<input type="password" name="password" /><br/>
Confirm password:<input type="password" name="password2" /><br/>
<div class="input-group form-group">
<label class="radio">Male
<input type="radio" checked="checked" name="gender" value="male" />
<span class="radiocheckmark"></span>
</label>
<label class="radio">Female
<input type="radio" name="gender" value="female" />
<span class="radiocheckmark"></span>
</label>
</div>
<button name="submit" type="submit" value="submit">submit</button>
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$con = new mysqli('localhost', 'mysqluser','mysqlpassword');
if ($con->connect_error) {
die('001T DB Connection Error: ' . $con->connect_error);
}
$dbsel = $con->select_db('stackoverflow');
if (!$dbsel) {
die('002T Can\'t use database stackoverflow: ' . $con->error);
}
$name =$_POST["name"];
$surname =$_POST["surname"];
$email =$_POST["email"];
$username =$_POST["username"];
$password =$_POST["password"];
$password2 =$_POST["password2"];
$gender =$_POST["gender"];
/* Do stuff here to sanitise input,
compare password==password2,
encrypt password
etc. */
$entry = $con->prepare("INSERT INTO register (name, surname, email,username, password, gender) VALUES( ?, ?, ?, ?, ?, ?)");
$entry->bind_param('ssssss', $name, $surname, $email, $username, $password, $gender);
$entry->execute();
printf("Error: %s.\n",$entry->error);
print "Entry $name added";
}
我创建了我的测试表
CREATE TABLE `register` (
`name` varchar(20),
`surname` varchar(20),
`email` varchar(20),
`username` varchar(20),
`password` varchar(20),
`gender` enum('male','female')
)
推荐阅读
- google-apps-script - 当有多个脚本项目绑定到同一个 Google 表格时,哪个函数会运行?
- java - 使用 JMapper 将 SprinBoot DTO 转换为实体(反之亦然)
- linux - 创建用于检查配置的脚本
- deep-learning - 如何下载拥抱脸情绪分析管道以离线使用?
- python - 使用 for 循环和预定义的第一个元素创建一个 python 列表
- spring - Spring SFTP Outbound Adapter - 确定文件何时发送
- java - webflux 中的异步请求不是异步的
- java - Qt 5.14.2 在 Android 上共享文件
- python-3.x - 如何从单引号转换带有双引号的python字典
- c# - 如何返回与登录系统的用户具有相同城市代码的用户列表?