Tinyint用于真/假

时间:2013-11-16 06:49:04

标签: php mysql

我创建了一个表person,其中包含两个微小字段来决定一个人的角色。角色为instructorfaculty。一个人可以是一个或两个。我更喜欢使用tinyint,因为我可以将1设置为true,将0设置为false。问题是我该怎么做并将值提交到mysql表personSITE

表格

CREATE TABLE IF NOT EXISTS `person` (
  `person_id` int(11) NOT NULL auto_increment,
  `faculty_role` tinyint(1) NOT NULL,
  `instructor_role` tinyint(1) NOT NULL,
  `person_name` varchar(50) NOT NULL,
  PRIMARY KEY  (`person_id`),
);

HTML

<?php

if(isset($_POST['submit'])){

        //Need help here
}

?>
<form action="test2.php" method="POST">
<b>Select the role for the person</b>
</br>
</br>
Name:<input type="text" name="person_name">
     <input type="checkbox" name="role" value="faculty">faculty
     <input type="checkbox" name="role" value="instructor">instructor<br><br>
Name:<input type="text" name="person_name">
     <input type="checkbox" name="role" value="faculty">faculty
     <input type="checkbox" name="role" value="instructor">instructor<br><br>

<input value="SAVE" name="submit" type="submit">

</form>

3 个答案:

答案 0 :(得分:0)

您需要检查PDO for PHP。 PDO是一个允许您编译MYSQL方法的对象。

http://php.net/manual/en/book.pdo.php

构建PDO对象后,您可以准备查询,然后只需插入或更新。

您可以通过选中单选按钮来定义教师或教师;

$var = 0;
$option = $_POST['role'];
if($option=='faculty')
   $var = 1
else
   $var = 0

然后只需插入PDO或更新

答案 1 :(得分:0)

评估此人的角色,然后您可以使用以下代码:

$con=mysqli_connect("Mysql_host","DB_username","DB_password","DB_name");

$contact_role = 0;
$instructor_role = 0;
foreach($_POST['role'] as $role){
if($role == "faculty")
    $contact_role = 1;
if($role == "instructor")
    $instructor_role = 1;
}

$personName = mysqli_real_escape_string($_POST['person_name']);

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"INSERT INTO person (contact_role, instructor_role, person_name) VALUES ('$contact_role', '$instructor_role', '$presonName')");

mysqli_close($con);

为了使其更安全并防止mysql注入,您可以使用预准备语句。

答案 2 :(得分:0)

第一件事:

  • 您不得使用相同的名称进行输入。此外,正如您使用复选框组使用数组。你可以使用这样的东西:

    Name:<input type="text" name="person_name1">
         <input type="checkbox" name="role1[]" value="faculty">faculty
         <input type="checkbox" name="role1[]" value="instructor">instructor<br><br>
    Name:<input type="text" name="person_name2">
         <input type="checkbox" name="role2[]" value="faculty">faculty
         <input type="checkbox" name="role2[]" value="instructor">instructor<br><br>
    
  • 您需要使用mysqlimysql pdo来读取/写入mysql数据库。以下是数据库连接的完成方式。

    $connect = mysqli_connect("HOST","DB_USERNAME","DB_PASSWORD","DB_NAME");
    if (mysqli_connect_errno()) {
        die("Unable to connect to database. Error: ". mysqli_connect_error());
    }
    
  • 您的表字段是tinyint,其中表单值是字符串。您需要实现逻辑来获取相对的int值。

    if(isset($_POST['submit'])){
        $person1_role1 = empty($_POST['role1'][0]) ? 0 : 1;
        $person1_role2 = empty($_POST['role1'][1]) ? 0 : 1;
    
        // Do the same for person2
    
        // grab other fields (person_name1, person_name2)
    
        // Query insert statement
    }