单选按钮值未存储在数据库中

Posted

技术标签:

【中文标题】单选按钮值未存储在数据库中【英文标题】:radio button values not getting stored in database 【发布时间】:2016-09-09 11:56:34 【问题描述】:

one.html

<!DOCTYPE html>
<html> 
<head> 
<title>page1</title> 
<link rel="stylesheet" type="text/css" href="style.css"> 
</head>
<div id="one"> 
<form method="post" action="connect1.php">
<h4>Answer all the questions on the scale (1)Strongly agree to (5)Strongly disagree </h4>
<table  border="1" cellpadding="10">
<tbody>
  <tr>
    <th style="width:50% ; text-align:center" scope="col">Questions</th>
    <th style="width:10% ; text-align:center" scope="col">Strongly agree</th>
    <th style="width:10% ; text-align:center" scope="col">Agree</th>
    <th style="width:10% ; text-align:center" scope="col">Neutral</th>
    <th style="width:10% ; text-align:center" scope="col">Disagree</th>
    <th style="width:10% ; text-align:center" scope="col">Strongly disagree</th>
  </tr>
  <tr>
    <td>1.People are clear about their role and performance levels expected of them.</td>
    <td><input type="radio" name="q1" value="q1a">
      1</td>
    <td><input type="radio" name="q1" value="q1b">
      2</td>
    <td><input type="radio" name="q1" value="q1c">
      3</td>
    <td><input type="radio" name="q1" value="q1d">
      4</td>
    <td><input type="radio" name="q1" value="q1e">
      5</td>
  </tr>
  <tr>
    <td>2.People understand how their role fits with the responsibilities of others.</td>
    <td><input type="radio" name="q2" value="q2a">
      1</td>
    <td><input type="radio" name="q2" value="q2b">
      2</td>
    <td><input type="radio" name="q2" value="q2c">
      3</td>
    <td><input type="radio" name="q2" value="q2d">
      4</td>
    <td><input type="radio" name="q2" value="q2e">
      5</td>
  </tr>
  <tr>
    <td>3.People understand the contribution they are making to organisational objectives.</td>
    <td><input type="radio" name="q3" value="q3a">
      1</td>
    <td><input type="radio" name="q3" value="q3b">
      2</td>
    <td><input type="radio" name="q3" value="q3c">
      3</td>
    <td><input type="radio" name="q3" value="q3d">
      4</td>
    <td><input type="radio" name="q3" value="q3e">
      5</td>
  </tr>
  <tr>
    <td>4.People are clear about the behaviours expected of them in achieving their objectives.</td>
    <td><input type="radio" name="q4" value="q4a">
      1</td>
    <td><input type="radio" name="q4" value="q4b">
      2</td>
    <td><input type="radio" name="q4" value="q4c">
      3</td>
    <td><input type="radio" name="q4" value="q4d">
      4</td>
    <td><input type="radio" name="q4" value="q4e">
      5</td>
  </tr>
  <tr>
    <td>5.Values and attributes are aligned with each other and support critical behaviour such as customer service or innovation.</td>
    <td><input type="radio" name="q5" value="q5a">
      1</td>
    <td><input type="radio" name="q5" value="q5b">
      2</td>
    <td><input type="radio" name="q5" value="q5c">
      3</td>
    <td><input type="radio" name="q5" value="q5d">
      4</td>
    <td><input type="radio" name="q5" value="q5e">
      5</td>
  </tr>
  <tr>
    <td>6.People feel the organisational systems are 'in sync' with their objectives.</td>
    <td><input type="radio" name="q6" value="q6a">
      1</td>
    <td><input type="radio" name="q6" value="q6b">
      2</td>
    <td><input type="radio" name="q6" value="q6c">
      3</td>
    <td><input type="radio" name="q6" value="q6d">
      4</td>
    <td><input type="radio" name="q6" value="q6e">
      5</td>
  </tr>
  <tr>
    <td>7.People believe they are given space to try new ideas or ways of doing things.</td>
    <td><input type="radio" name="q7" value="q7a">
      1</td>
    <td><input type="radio" name="q7" value="q7b">
      2</td>
    <td><input type="radio" name="q7" value="q7c">
      3</td>
    <td><input type="radio" name="q7" value="q7d">
      4</td>
    <td><input type="radio" name="q7" value="q7e">
      5</td>
  </tr>
  <tr>
    <td>8.Knowledge-sharing enables people to learn from one another.</td>
    <td><input type="radio" name="q8" value="q8a">
      1</td>
    <td><input type="radio" name="q8" value="q8b">
      2</td>
    <td><input type="radio" name="q8" value="q8c">
      3</td>
    <td><input type="radio" name="q8" value="q8d">
      4</td>
    <td><input type="radio" name="q8" value="q8e">
      5</td>
  </tr>
  <tr>
    <td>9.Cross-functional working enables people to learn from others' experiences.</td>
    <td><input type="radio" name="q9" value="q9a">
      1</td>
    <td><input type="radio" name="q9" value="q9b">
      2</td>
    <td><input type="radio" name="q9" value="q9c">
      3</td>
    <td><input type="radio" name="q9" value="q9d">
      4</td>
    <td><input type="radio" name="q9" value="q9e">
      5</td>
  </tr>
  <tr>
    <td>10.People watch for changes within the external world that might impact on the organisation.</td>
    <td><input type="radio" name="q10" value="q10a">
      1</td>
    <td><input type="radio" name="q10" value="q10b">
      2</td>
    <td><input type="radio" name="q10" value="q10c">
      3</td>
    <td><input type="radio" name="q10" value="q10d">
      4</td>
    <td><input type="radio" name="q10" value="q10e">
      5</td>
  </tr>
</tbody>
</table>
<input type="submit" value="submit">
</form>
</div>
</body>
</html>

connect1.php

<?php 
//connecting to the database 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'survey'); 
define('DB_USER','root'); 
define('DB_PASSWORD',''); 
$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error());

//inserting Record to the database
$q1 = $_POST['q1'];
$q2 = $_POST['q2'];
$q3 = $_POST['q3'];
$q4 = $_POST['q4'];
$q5 = $_POST['q5'];
$q6 = $_POST['q6'];
$q7 = $_POST['q7'];
$q8 = $_POST['q8'];
$q9 = $_POST['q9'];
$q10 = $_POST['q10'];
$query = "INSERT INTO one(q1,q2,q3,q4,q5,q6,q7,q8,q9,q10)VALUES('$q1','$q2','$q3','$q4','$q5','$q6','$q7','$q8','$q9','$q10')"; 
$result = mysql_query($query); 
if($result) 
 
echo "Thank you for taking the test!"; 
 
else 
 
die('Error: '.mysql_error($con)); 
 
mysql_close($con); 
?>

数据库中的结果

我为从$q1$q10 标记的十个问题有十个输入。每个问题有五个单选按钮选项,用户选择一个。在存储到数据库中时,$q1 列的值作为这五个选项之一存储 (q1a/q1b/q1c/q1d/q1e)。但对于接下来的问题,只存储零 (0)。

【问题讨论】:

代码高亮应该告诉你在某处有一个未闭合的引用文字 可能在这里&lt;td&gt;9.Cross-functional working enables people to learn from others' experiences.&lt;/td&gt; 我刚刚粘贴了你的代码,在这里可以正常工作。 q2到q10字段的数据类型是什么。如果值存储为 0,则它们的类型可能是整数,您需要存储字符串。如果类型不是 varchar,则设为 varchar。 我认为现在您应该检查字段数据类型。我猜字段类型是 int 。 【参考方案1】:

首先,避免使用 mysql_ 函数,您应该使用准备好的语句将其转换为 PDO。这里的例子:http://php.net/manual/en/pdo.prepared-statements.php

原因是 mysql_ 从 PHP5.5 中被弃用,并从 PHP7 中完全删除。您当前的代码易受 SQL 注入和跨站点脚本攻击,PDO 将帮助您解决 SQL 注入问题。

您必须始终验证来自用户的数据。你不能相信他们。如果有人要编辑单选按钮的值,他们可以将任何东西插入数据库。 当您使用 POST/GET 时,我推荐 PHP 的内置输入过滤器 filter_input() 函数,它也会为您过滤输入,从而防止跨站点脚本。

你还应该避免使用 die();并且不应向最终用户显示 mysql 错误消息。您应该只显示一个说明发生了某事而不是实际错误的文本,这应该被记录下来以供您查看,也只是只读。

在查询的每个段后留出空格,可读性和格式可能会破坏您的插入。插入一个(q1,q2)值('$q1','$q2')。但是,如果您决定使用 PDO,情况会有所不同。

尝试 var_dump($_POST) 查看是否有提交时的 POST 数据。

没有密码的ROOT也很关键,至少应该有密码,一般来说使用root不是一个好习惯。最好的办法是您可以在该数据库中创建一个新用户。

我希望您将此视为建设性的批评,我只是想让您的代码更好、更安全。

谢谢!

【讨论】:

我的系统中有用户名和密码,只是这里没有显示。而且由于我只是在学习编码,所以我不知道 my_sql 函数的弃用。将按照建议用 PDO 函数替换我的 php 代码。修改后肯定会发布任何查询或结果。非常感谢您的意见!

以上是关于单选按钮值未存储在数据库中的主要内容,如果未能解决你的问题,请参考以下文章

iOS 中单选按钮的实现

单选按钮值未解析

跪求:在ASP中单选按钮怎么用FOR语句输出

如何以编程方式更改表格单元格中单选按钮组的单选按钮?

在 GridLayout 中居中单选按钮

Mysql 中的数据库不显示 html 和 php 中单选按钮的结果