gpt4 book ai didi

php - 测验表字段的索引基数是 '2' ,但应该是 '0'

转载 作者:行者123 更新时间:2023-11-29 10:26:12 24 4
gpt4 key购买 nike

我有一个简单的测验系统,其中有一个测验表和编写用于将测验添加到数据库的 php 代码,包括每个测验的唯一 ID。在工作的数据库和程序中,我注意到索引基数为 0,而在似乎不工作的数据库中,我注意到索引基数为 2。

这是否导致无法生成唯一的测验,或者与代码有关?

例如,我创建一个名为 testquiz 的测验,它应该生成 1,2,3 等 id。

相反,它会产生这样的结果:

enter image description here

在有效的版本中,它(正确)生成一个唯一的 id 和存储的测验 id:

enter image description here不工作基数如下所示:(此表的基数为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com