我创建了一个表person
有两个tinytint字段来决定一个人的角色。角色是instructor
和faculty
。一个人可以是其中之一,也可以是两者兼而有之。我更喜欢使用tinyint,因为我可以设置 1
为真且0
为假。问题是我怎样才能这样做并将值提交到 mysql 表 person
。 SITE
表格
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>
最佳答案
首先要做的事情:
您不得使用相同的名称进行输入。另外,当您使用复选框组时,请使用数组。你可能会使用这样的东西:
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>
您需要使用mysqli或mysql 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 }
关于php - Tinyint 用于 true/false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20015666/