Php 如何在数据库中插入所有这些详细信息
我有一个应用程序,用户可以编写一些问题,并将其添加到应用程序的表行中(每个问题都进入每一行)。用户写完问题后,可以将这些问题添加到数据库中 现在,如果用户只有一个问题要添加到数据库中,那么这很好,因为当我在数据库中插入这个问题时,它会在数据库中插入这个问题 但问题是,如果用户有两个或多个问题要插入数据库,它只会在数据库行中插入最新的问题,而不是两个问题 例如,如果我在应用程序表行中有一个问题(2+2是什么),那么它将在数据库中显示以下内容:Php 如何在数据库中插入所有这些详细信息,php,javascript,mysql,Php,Javascript,Mysql,我有一个应用程序,用户可以编写一些问题,并将其添加到应用程序的表行中(每个问题都进入每一行)。用户写完问题后,可以将这些问题添加到数据库中 现在,如果用户只有一个问题要添加到数据库中,那么这很好,因为当我在数据库中插入这个问题时,它会在数据库中插入这个问题 但问题是,如果用户有两个或多个问题要插入数据库,它只会在数据库行中插入最新的问题,而不是两个问题 例如,如果我在应用程序表行中有一个问题(2+2是什么),那么它将在数据库中显示以下内容: SessionId QuestionConten
SessionId QuestionContent
SAS What is 2+2
SessionId QuestionContent
SAS What is 3+3
SessionId QuestionContent
SAS What is 2+2
SAS What is 3+3
但如果我在应用程序表行中有两个问题(什么是2+2,什么是3+3),那么它将在数据库中显示以下内容:
SessionId QuestionContent
SAS What is 2+2
SessionId QuestionContent
SAS What is 3+3
SessionId QuestionContent
SAS What is 2+2
SAS What is 3+3
以上内容不正确,因为它只显示最新的问题,而不是两个问题。它应在数据库中显示以下内容:
SessionId QuestionContent
SAS What is 2+2
SessionId QuestionContent
SAS What is 3+3
SessionId QuestionContent
SAS What is 2+2
SAS What is 3+3
那么我的问题是,我如何才能像上面那样在数据库中插入所有的问题呢
以下是我目前拥有的插入值代码:
<?php
mysql_connect('localhost',$username,$password);
mysql_select_db($database) or die( "Unable to select database");
$insertquestion = array();
foreach($_POST['questionText'] as $question)
{
$insertquestion[] = "' ". mysql_real_escape_string( $_SESSION['id'] ) . "' , ' ". mysql_real_escape_string( $question ) . "'";
}
$questionsql = "INSERT INTO Question (SessionId, QuestionContent)
VALUES (" . implode('), (', $insertquestion) . ")";
mysql_query($questionsql);
mysql_close();
?>
)
问题:
问题
据我所知,您的$insertquestion数组中只有一个元素:
$insertquestion[] = "' ". mysql_real_escape_string( $_SESSION['id'] ) . "' , ' ". mysql_real_escape_string( $_POST['questionText'] ) . "'";
这将插入一个元素。当您内爆此数组时,只有一个元素,因此它与$insertquestion[0]相同
允许您输入多个问题的HTML表单是什么样子的?您是使用多个表单域还是将多个问题放入一个表单域?如果是后者,则首先需要将这些问题分开,并将每个问题推入$insertquestion
编辑
根据您的HTML/JS代码,问题在于您使用相同的名称插入每个新的文本区域。提交表单时,会对重复的命名元素进行分组,这将导致在$\u POST数组中仅显示具有该名称的最后一个元素
要解决此问题,可以在元素名称后附加“[]”。这样,该名称的$\u POST数组将包含一个数组
因此,在javascript代码中,将其更改为:
var $questionText = $("<textarea class='textAreaQuestion'</textarea>").attr('name',$this.attr('name')+"[]").attr('value',$this.val())
这将循环通过$_POST['questionText']数组,并将该数组的每个元素(即每个问题)插入到$insertquestion数组中。然后你就可以开始了。你应该做的第一件事就是检查明显的问题。首先确保生成的sql对于多个值是正确的。因此,不要在程序中运行查询,只需打印出来并直接在mysql中运行即可。此外,如果您可以发布您的模式,它可能会有所帮助。但乍一看,一切都正常。我对我的查询做了回应,在输入了两个问题后,它做了同样的事情,只回应了最新的问题,而不是两个问题。它回应了以下内容:
插入问题(SessionId,QuestionContent)值('WNQ','what is 2+2')
最初的问题似乎没有关于值的循环。我已在问题底部添加了关于如何添加问题的代码:)我将向您发布添加问题时的代码,它需要javascript和html。我将发布代码,给我10分钟:)我已经在问题的底部添加了关于如何添加问题的代码:)我将测试此代码,如果它有效或无效,将返回给您。谢谢,我将在10分钟左右测试它。我测试了它,但不太有效。但有一个变化,它不是插入已输入数据库的最新问题,而是发布已输入数据库的第一个问题,例如,如果我有两个问题,第一个是“what is 1+1”,第二个是“what color is the sky”,数据库将在数据库中插入“what is 1+1”问题。我只更新了发生查询的php代码和追加行的javascript代码。