将多个真假单选按钮插入mysql
Posted
技术标签:
【中文标题】将多个真假单选按钮插入mysql【英文标题】:Insert multiple true false radio buttons into mysql 【发布时间】:2017-08-08 07:48:38 【问题描述】:我正在尝试回答三个问题是或否问题并将它们发布到数据库中,以便我可以在以后分析趋势,我目前有 JS 统计的总数和 Jquery 显示的结果,但我想向前迈出一步并保留来自三个问题的信息,但我没有成功我没有收到错误消息,但它没有在数据库中创建条目。然而,JS 仍在工作。有人对我哪里出错有任何想法吗?提前致谢!
<?php
$host="XXXXXXXX"; // Host name
$username="XXX"; // mysql username
$password="XXX"; // Mysql password
$db_name="XXXXXX"; // Database name
$tbl_name="test_mysql"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Get values from form
$question0=$_POST['question1'];
$question1=$_POST['question2'];
$question2=$_POST['question3'];
// Insert data into mysql
$sql="INSERT INTO $tbl_name(Q1, Q2, Q3)VALUES('$question0', '$question1', '$question2')";
$result=mysql_query($sql);
?>
<p class="click" id="blue"> You are only charged interest on the amount that is remaining at the end of the month<br>
<input type="radio" name="question0" value="A" class="click" id="blue"> True </radio>
<input type="radio" name="question0" value="B" class="click" id="blue"> False </radio>
<p class="click" id="blue">I have to pay off the balance in full every month <br>
<input type="radio" name="question1" value="A" class="click" id="blue"> True </radio>
<input type="radio" name="question1" value="B" class="click" id="blue"> False </radio>
<p class="click" id="blue">If I don't make a payment my credit score will be unaffected<br id="blue">
<input type="radio" name="question2" value="A" class="click" id="blue"> True </radio>
<input type="radio" name="question2" value="B" class="click" id="blue"> False </radio></p>
<button type="button" class="btn btn-primary btn-xl page-scroll" onclick = "returnScore()" id="click" >Results</button>
【问题讨论】:
呃...您需要实际发布这些输入以供 PHP 部分执行某些操作。您目前没有向后端发送任何内容。至少我们不能看到。 如果您正在编写新代码,请不要使用mysql_*
函数。它们又旧又坏,在 PHP 5.5 中被弃用(它太旧了,甚至不再接收安全更新),并在 PHP 7 中完全删除。使用 PDO
或 mysqli_*
和 prepared statements而参数绑定。详情请见***.com/q/12859942/354577。
【参考方案1】:
首先,您可以使用ENUM
类型来存储具有类似于以下架构的答案:
CREATE TABLE answers (
id int NOT NULL AUTO_INCREMENT,
q1 enum('true','false') DEFAULT 'false',
q2 enum('true','false') DEFAULT 'false',
q3 enum('true','false') DEFAULT 'false',
primary key (id)
);
然后在 PHP 中你可以这样做:
$question1 = $_POST['question1'] == 'A' ? 'true' : false;
$question2 = $_POST['question2'] == 'A' ? 'true' : false;
$question3 = $_POST['question3'] == 'A' ? 'true' : false;
也很重要:
mysql_*
PHP 扩展已被弃用多年,甚至不再存在于 PHP7 中。请考虑升级到 mysqli_*
甚至更好的 PDO。
您没有转义数据库输入。您面临 SQL 注入的风险,在 Gab 的乌托邦国家,您将被判入狱 6 年。转义数据库输入非常重要,最好使用参数化查询。
【讨论】:
看起来我在这方面还有一些工作要做,但谢谢你应该做的伎俩!以上是关于将多个真假单选按钮插入mysql的主要内容,如果未能解决你的问题,请参考以下文章