- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的测验系统,其中有一个测验表和编写用于将测验添加到数据库的 php 代码,包括每个测验的唯一 ID。在工作的数据库和程序中,我注意到索引基数为 0,而在似乎不工作的数据库中,我注意到索引基数为 2。
这是否导致无法生成唯一的测验,或者与代码有关?
例如,我创建一个名为 testquiz 的测验,它应该生成 1,2,3 等 id。
相反,它会产生这样的结果:
在有效的版本中,它(正确)生成一个唯一的 id 和存储的测验 id:
不工作基数如下所示:(此表的基数为 2,并且运行代码时不会生成唯一的测验 ID)
Action Keyname Type Unique Packed Column Cardinality Collation Null Comment
Edit Edit Drop Drop PRIMARY BTREE Yes No id 2 A No
但是,这有效:
Action Keyname Type Unique Packed Column Cardinality Collation Null Comment
Edit Edit Drop Drop PRIMARY BTREE Yes No id 0 A No
MySQL 自动生成基数,所以我认为我无法更改它?如果这是问题所在,该怎么办?
否则,如果代码有问题,有人可以指出问题是什么:
添加新测验的代码
<?php
include('scripts/connect_db.php');
if(isset($_POST['quizName']) && $_POST['quizName'] != ""
&& isset($_POST['quizTime']) && $_POST['quizTime'] != ""
&& isset($_POST['numQues']) && $_POST['numQues'] != ""){
$qName=mysqli_real_escape_string($con,$_POST['quizName']);
$qTime=mysqli_real_escape_string($con,$_POST['quizTime']);
$nQues=mysqli_real_escape_string($con,$_POST['numQues']);
$qTime = preg_replace('/[^0-9]/', "", $qTime);
$nQues = preg_replace('/[^0-9]/', "", $nQues);
$fetch=mysqli_query($con,"SELECT id FROM quizes
WHERE quiz_name='$qName'")or die(mysqli_error());
$count=mysqli_num_rows($fetch);
if($count!="")
{
$user_msg = 'Sorry, but \ '.$qName.' \ already exists!';
header('location: admin.php?msg='.$user_msg.'');
}else{
mysqli_query($con,"INSERT INTO quizes (quiz_name, display_questions, time_allotted)
VALUES ('$qName','$nQues','$qTime')")or die(mysqli_error());
$lastId = mysqli_insert_id();
mysqli_query($con,"UPDATE quizes SET quiz_id='$lastId'
WHERE id='$lastId' LIMIT 1")or die(mysqli_error());
$user_msg = 'Quiz, \ '.$qName.' \ has been created!';
header('location: admin.php?msg='.$user_msg.'');
}
}else{
$user_msg = 'Sorry, but Something went wrong';
header('location: admin.php?msg='.$user_msg.'');
}
?>
总而言之,主要问题是,当运行代码添加新测验时,不会生成唯一的测验 ID 和/或不会将其添加到数据库中,因此测验 ID 始终为 0。
在我的程序版本中,测验 ID 已正确生成并添加,但该版本包含已失效的 MySQL 函数。
以前的原始代码工作正常(但使用已失效的 MySQL):
<?php
include('scripts/connect_db.php');
if(isset($_POST['quizName']) && $_POST['quizName'] != ""
&& isset($_POST['quizTime']) && $_POST['quizTime'] != ""
&& isset($_POST['numQues']) && $_POST['numQues'] != ""){
$qName=mysql_real_escape_string($_POST['quizName']);
$qTime=mysql_real_escape_string($_POST['quizTime']);
$nQues=mysql_real_escape_string($_POST['numQues']);
$qTime = preg_replace('/[^0-9]/', "", $qTime);
$nQues = preg_replace('/[^0-9]/', "", $nQues);
$fetch=mysql_query("SELECT id FROM quizes
WHERE quiz_name='$qName'")or die(mysql_error());
$count=mysql_num_rows($fetch);
if($count!="")
{
$user_msg = 'Sorry, but \ '.$qName.' \ already exists!';
header('location: admin.php?msg='.$user_msg.'');
}else{
mysql_query("INSERT INTO quizes (quiz_name, display_questions, time_allotted)
VALUES ('$qName','$nQues','$qTime')")or die(mysql_error());
$lastId = mysql_insert_id();
mysql_query("UPDATE quizes SET quiz_id='$lastId'
WHERE id='$lastId' LIMIT 1")or die(mysql_error());
$user_msg = 'Quiz, \ '.$qName.' \ has been created!';
header('location: admin.php?msg='.$user_msg.'');
}
}else{
$user_msg = 'Sorry, but Something went wrong';
header('location: admin.php?msg='.$user_msg.'');
}
?>
我无法发现错误,也无法判断错误是在 php 代码中,还是在数据库设置中。
想法?解决方案?谢谢。
最佳答案
您必须激活“自动增量”选项当您激活它时,每次插入新行时都会生成一个 uniqueId。
关于php - 测验表字段的索引基数是 '2' ,但应该是 '0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48262274/
正如标题所说,我需要制作一个函数,在二进制补码中的 2 个碱基、DEC 和 HEX 之间进行转换。该值使用的位数从一开始就已知。 在深入研究之后,我发现了以下算法: 给定一个 DEC 中的数字。 获取
我的用户文档具有以下格式: { userId: "", userAttributes: [ "", "", ... ""
根据这个: Selectivity is the value between 0 and 1, and it is the fraction of rows returned after applyi
这个词有它 FillChar 是用相同值的字节填充内存补丁的最快方法(不是零,因为有 ZeroMemory),但是是否有等效于用相同的序列填充内存(四字节)整数或基数?像 FillInt 或 Fill
我正在努力寻找建模 1 : 0,1 关系的最佳方法(“可能有一个”或“最多有一个”)。我相信这被称为 Z 基数。 例如,假设我有两个类 Widget和 WidgetTest .并非所有 Widget
我使用parseInt找到了一个片段;它用于获取窗口高度。 这是代码: parseInt($(window).height(), 20); 我很困惑为什么使用 20 作为第二个参数。为什么不是 10
要将十进制数转换为基数 2,我使用: int base2 = 10; Convert.ToString(base2, 2); 输出:1010 但是我怎么能做相反的事情呢?即: 输入:1010输出:10
这是一张真实 table 的再现。假设我有这段代码: CREATE TABLE `testTable` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
由于十六进制(基数 16)使用 0-9A-F,并且(我在这里假设)基数 17 使用 0-9A-G,依此类推。什么符号用过一次0-9A-Z都用完了。 最佳答案 你的问题没有标准答案。 “Base 36”
我正在寻找支持 radix 的浏览器列表Number.toString() 中的参数在 JavaScript 中。全部执行toString ,但我找不到他们是否都支持 radix toString 的
这个问题已经有答案了: What is the radix parameter in Java, and how does it work? (6 个回答) 已关闭 5 年前。 public clas
为什么 (73).toString(36) 返回 21 而 (0.73).toString(36) 返回 0。 qa2voha2volfpsnhmyhqia4i 而不是 0.21? 最佳答案 这是因为
我目前正在研究数据库,我看到 degree 和 cardinality 用作相同的术语,或在某些其他学位定义为否。关系中涉及的实体的数量,并进一步分类为一元、二元和三元。 某些放置度数定义为关系类型的
UML(统一建模语言)中的运算符*和运算符0..*有什么区别? 我看到了这两个基数运算符,但是现在我不必使用哪个基数运算符了。 最佳答案 符号“*”是“0 .. *”的快捷方式。在这种情况下使用的正确
我有位于目录“someApp”中的 Angular 应用程序。网址是 http://example-domain/someApp/#/对于一些带有路径的状态 url 是:http://example-
我想一劳永逸地知道如何编写 UML 基数,因为我经常不得不讨论它们(因此非常欢迎证据和来源:) 如果我想解释一下 Mother可以有几个Child任但是 Child有一个而且只有一个 Mother ,
进行字符算术时,规则是以 10 为基数还是以 8 为基数进行计算?我的书上说'A' = 101(基数为8)或65(基数为10),但是当我将基数为8的字符值插入到我的书给出的关于说明这一点的示例中时,我
该程序是将 4 进制数转换为 2 进制数,并且应该就地完成 #include #include void shiftr(char num[],int i) { memmove(num+i,n
这个问题已经有答案了: JavaScript parseInt is giving me wrong number, what I'm doing wrong? [duplicate] (1 个回答)
我遇到了一个小错误,它似乎表明当您传入图像数据作为其源时,在图像完全加载之前调用了 onload 函数。 这是 HTML 这是 JavaScript: var can
我是一名优秀的程序员,十分优秀!