将随机数据保存到数据库而不重复-php
这是一个考试系统,我随机问了一个问题,我的问题是如何保存它并确定它是否已经保存在数据库中。将随机数据保存到数据库而不重复-php,php,random,save,Php,Random,Save,这是一个考试系统,我随机问了一个问题,我的问题是如何保存它并确定它是否已经保存在数据库中。 下面是随机的代码,为什么在我点击下一步之后,它甚至没有一个动作,它发布了未定义的索引“sub”,但我已经在顶部声明了它。如果数据是随机的,如何保存数据并避免重复保存的数据 <? $exam_id = $_SESSION['examreference_id']; $sub_id = $_GET['sub']; $count=0; $con = mysql_connect("localhost","ro
下面是随机的代码,为什么在我点击下一步之后,它甚至没有一个动作,它发布了未定义的索引“sub”,但我已经在顶部声明了它。如果数据是随机的,如何保存数据并避免重复保存的数据
<?
$exam_id = $_SESSION['examreference_id'];
$sub_id = $_GET['sub'];
$count=0;
$con = mysql_connect("localhost","root","");
if(!$con)
{
die('Could not connect:'. mysql_error());
}
mysql_select_db("db_compre",$con);
$result2 = mysql_query("SELECT * FROM examquestion_table WHERE examreference_id = '$exam_id' AND subjectreference_id = '$sub_id'");
while($info2 = mysql_fetch_array($result2))
{
$count++;
}
mysql_close($con);?>
<tr>
<td colspan = "2"> <?
$con = mysql_connect("localhost","root","");
if(!$con)
{
die('Could not connect:'. mysql_error());
}
mysql_select_db("db_compre",$con);
$result = mysql_query("SELECT * FROM examquestion_table WHERE examreference_id = '$exam_id' AND subjectreference_id = '$sub_id' ORDER BY RAND() LIMIT 1");
while($info = mysql_fetch_array($result))
{
echo "<tr><td ><label>" . " Your time limit is ".$info['totalTime'] ."  ". "second(s)" . "</label></td></tr>";
echo "<tr><td ><label>" . $info['question_data'] . "</label></td></tr>";
echo "<tr><td colspan ='2'><hr size = '5' color = 'orange'></td></tr><tr>";
echo "<tr><td colspan = '2'><input type = 'checkbox' name='answer' onClick='javascript:checkone(0)' value = '100'><label>". $info['choice1_data'] ."</label></td></tr>";
echo "<tr><td colspan = '2'><input type = 'checkbox' name='answer' onClick='javascript:checkone(1)' value = '100'><label>". $info['choice2_data'] ."</label></td></tr>";
echo "<tr><td colspan = '2'><input type = 'checkbox' name='answer' onClick='javascript:checkone(2)' value = '100'><label>". $info['choice3_data'] ."</label></td></tr>";
echo "<tr><td colspan = '2'><input type = 'checkbox' name='answer' onClick='javascript:checkone(3)' value = '100'><label>". $info['choice4_data'] ."</label></td></tr>";
}
mysql_close($con);?>
问题的措辞非常混乱,但第一句说“我提出了一个随机问题,我的问题是如何保存它并确定它是否已经保存在数据库中。”
试一试,也许这就是你想要的:
<?php
$con = mysql_connect("localhost","root","") or die('Could not connect:'. mysql_error());
mysql_select_db("db_compre", $con);
$result = mysql_query("SELECT 1 FROM examquestion_table WHERE examreference_id = '{$exam_id}' AND subjectreference_id = '{$sub_id}'");
list($exists) = mysql_fetch_row($result2);
if (!$exists)
mysql_query("INSERT INTO examquestion_table (examreference_id, subjectreference_id) VALUES ('{$exam_id}', '{$sub_id}')");
mysql_close($con);
?>
这将向您显示每个数据库中的数据。如果我答对了,您将为数据库提取问题,用户将回答这些问题。
您希望确保问题不会被多次提出,并且您希望
也可以保存访问者的答案
如果这是您的意思,那么您应该创建另一个表来指示已提出的问题,同一个表还将保存所选的答案
主要问题是:如何将问题与访问者联系起来?
如果您有会员系统,则应将问题与用户ID关联,
否则,请使用随机值为microtime()或某个唯一值的cookie
+用户回答
-身份证
-问题编号
-选择答案
-用户统一id
当您从数据库中提取问题时,请使用JOIN以确保问题的ID不存在于“user\u answers”中的“user\u unique\u ID”
您需要创建一个函数,将所问问题和所选选项添加到此表中。
我看到您使用的是js onclick,您需要调用一个运行该函数的php文件。第一件事。请在你的问题上应用一些语法规则和标点符号,很难理解你的意思。我根本看不出你在代码中使用索引sub
。@jprofitt-它位于php文件的顶部,现在我将它移到该部分中。你不是在那里声明它,而是试图访问它。如果您的URL不包含sub
,则会通知您。它需要类似于http://www.yoursite.com/page.php?sub=foo
变量$\u GET['sub']
存在。感谢您的建议,也许我可以添加您所说的内容,您可以给我更多的想法。不客气,请尝试编辑您的问题并更好地解释您的问题(只是Stackoverflow中基本用法的提示)@ga_-ra:在您解决问题之前,PHP通知仍然会显示。我发布的代码将帮助您找出问题所在,以便您能够找到问题并加以解决。在脚本开头运行调试代码时得到的输出是什么?当我保存并刷新时,会显示get:array(1){[“sub”]=>string(1)“3”}POST:array(0){},但当我单击下一个get:array(0){}POST:array(0){}注意:C:\xampp\htdocs\compre\answersheet.php中的未定义索引:sub位于第57行,因此当您“单击下一步”时,您没有在GET数组中传递“sub”。GET数组从URL获取其值,因此您需要调用URL,类似于“answerssheet.php?sub=3”,或者通过另一个表单传递值。
<?php
echo "GET:";
var_dump($_GET);
echo "<br /><br />POST:";
var_dump($_POST);
?>