首页 > 解决方案 > 如何从 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;

    }

标签: phpmysql

解决方案


这是一个工作示例(全部在名为 的程序中完成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')
)

推荐阅读