Php 检查表中的最新值并将其添加到表中
因为我有几个“项目”,每个项目都应该包含许多问题,所以我有一个问题页面,在那里我填写了一个视频链接、四个答案和四个drow down列表,用户可以为每个答案设置分数 然而,在数据库中我有两个表 一个表,“问题”,包含以下列:pid(项目id)、qid(问题id)和问题链接。另一个表“answer_det”有以下列:pid、qid、aid、answer和points 当我填写并执行我的问题页面时,我已经做了,所以每个答案都有一个id。在表“answer_det”中,Pid、Aid、answer和points正在设置。这就是它的样子: 当我为Pid=1的第一个项目插入第一个问题时,“问题”表: 我现在要做的是设置qid(问题id)。我不知道怎么做,但我认为我应该有一个代码来检查pid的最大qid,并向其中添加1,以便同一项目的每个新问题都得到一个新的qid。如果pid不在表中,则qid应获得值“1” 因此,如果您查看第一张图片,在显示的每一行上,qid应该是1,因为所有四个答案都属于同一个问题,这是pid=1的项目的第一个问题。所以,如果我想在同一个项目中添加一个问题,它看起来应该是一样的,但是qid=2,以此类推。如果我为项目2添加一个新的(第一个)问题,qid应该从1开始,依此类推。然后,如果我想为第一个项目再次添加一个新问题,代码应该检查最大qid是否为2,其中pid为1,然后插入一个带有答案但qid=3的新问题 它应该以几乎相同的方式在表格“问题”上工作,如第二张图片所示。当创建第一个问题时,除了我在“answer_det”-表中描述的问题之外,我希望第一个项目的第一个问题(pid=1)也有qid=1和我填写的链接。pid=1的项目的第二个问题应该得到qid=2。如果我为一个新项目添加第一个问题,那么它应该是pid=2和qid=1。然后,如果我想把第三个问题附加到第一个问题上,应该看到pid=1有两个问题(qid=2),加上1,第三个问题看起来像pid=1和qid=3 这是我现在拥有的代码,其中没有任何代码在两个表中的qid中插入任何内容Php 检查表中的最新值并将其添加到表中,php,mysql,sql,Php,Mysql,Sql,因为我有几个“项目”,每个项目都应该包含许多问题,所以我有一个问题页面,在那里我填写了一个视频链接、四个答案和四个drow down列表,用户可以为每个答案设置分数 然而,在数据库中我有两个表 一个表,“问题”,包含以下列:pid(项目id)、qid(问题id)和问题链接。另一个表“answer_det”有以下列:pid、qid、aid、answer和points 当我填写并执行我的问题页面时,我已经做了,所以每个答案都有一个id。在表“answer_det”中,Pid、Aid、answer和p
我有一个答案和一个建议给你:]
答复:
如果要将qid添加到每个问题中,则需要在插入问题之前插入问题,并使用mysqli_last_insert()函数获取qid:
$que = "INSERT INTO question VALUES('$pid5','','$video');";
mysqli_query($mysqli,$que);
$qid = mysqli_insert_id($conn); // get last inserted ID of the question
$que = "INSERT INTO answer_det VALUES('$pid5','$qid','$aid1','$answ1','$point1');";
// and so on
我的建议是:
我认为您可能需要采用不同的数据库结构
这是你的结构
// question table
| pid | qid | question_link |
|-----|-----|--------------------|
| 1 | 0 | http://example.com |
// question_det
| pid | qid | aid | answer | points |
|-----|-----|-----|--------|--------|
| 1 | | 1 | Yes | 10 |
使用完全不同的列作为主键是不好的做法。。。例如,您的表问题的主键应该是qid而不是pid;对于同一问题的问题表,主键应为aid而不是pid,并且两者都应设置为自动递增,因此每次插入新问题或问题时,它都会自动增加qid和aid列
你应该有这样的东西:
//create a table called 'project' to store them:
| pid | project_name |
|-----|------------------|
| 1 | project 1 |
| 2 | amazing project! |
//create a table called 'question':
| qid | pid | question | question_link |
|-----|-----|------------------|-------------------|
| 1 | 1 | super question | http:/example.com |
| 2 | 1 | question? | http:/example.com |
| 3 | 2 | more questions? | http:/example.com |
// and finally create a table called 'answer'
| aid | qid | answer | points |
|-----|-----|---------------|--------|
| 1 | 1 | Yes | 10 |
| 2 | 1 | No | 20 |
| 3 | 1 | Maybe | 30 |
| 4 | 1 | I do not know | 40 |
注意:每个表ID应设置为自动增量
PHP代码应该是这样的:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$pid = $_POST['pid']; // project ID
$question = $_POST['question']; // question may have a 'title' ?
$video = $_POST['videolink1'];
// the asnwers!
$answ1 = $_POST['ans1'];
$answ2 = $_POST['ans2'];
$answ3 = $_POST['ans3'];
$answ4 = $_POST['ans4'];
// the points!
$point1 = $_POST['pointset1'];
$point2 = $_POST['pointset2'];
$point3 = $_POST['pointset3'];
$point4 = $_POST['pointset4'];
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$query = "INSERT INTO question (pid,question,question_link) VALUES ({$pid},'{$question}','{$video}');";
if(mysqli_query($conn,$query)) {
echo "<br>Question Information stored successfully!";
$qid = mysqli_insert_id($conn); // get last inserted ID of the question
$query = "INSERT INTO answer(qid, answer, points) VALUES ({$qid},'{$answ1}',{$point1});";
$query .= "INSERT INTO answer(qid, answer, points) VALUES ({$qid},'{$answ2}',{$point2});";
$query .= "INSERT INTO answer(qid, answer, points) VALUES ({$qid},'{$answ3}',{$point3});";
$query .= "INSERT INTO answer(qid, answer, points) VALUES ({$qid},'{$answ4}',{$point4});";
if(mysqli_multi_query($conn,$query)) {
echo "<br>Questions stored successfully!";
} else {
echo mysqli_errno($conn);
}
} else {
echo mysqli_errno($conn);
}
AUTO_INCREMENT
是否适合您的需要?@Jan不,不会。该表可以如下所示:pid=1QID=1,pid=1QID=2,pid=1QID=3,pid=2QID=1,pid=2QID=2。因此,它不起作用。这似乎是一个相似的复制品
CREATE TABLE `project` (
`pid` INT(11) NOT NULL AUTO_INCREMENT,
`project_name` VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (`pid`))
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8;
CREATE TABLE `question` (
`qid` INT(11) NOT NULL AUTO_INCREMENT,
`pid` INT(11) NULL DEFAULT NULL,
`question` VARCHAR(60) NULL DEFAULT NULL,
`question_link` VARCHAR(300) NULL DEFAULT NULL,
PRIMARY KEY (`qid`))
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8;
CREATE TABLE `answer` (
`aid` INT(11) NOT NULL AUTO_INCREMENT,
`qid` INT(11) NULL DEFAULT NULL,
`answer` VARCHAR(100) NULL DEFAULT NULL,
`points` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`aid`))
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8;