Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在数据库中插入所有这些详细信息_Php_Javascript_Mysql - Fatal编程技术网

Php 如何在数据库中插入所有这些详细信息

Php 如何在数据库中插入所有这些详细信息,php,javascript,mysql,Php,Javascript,Mysql,我有一个应用程序,用户可以编写一些问题,并将其添加到应用程序的表行中(每个问题都进入每一行)。用户写完问题后,可以将这些问题添加到数据库中 现在,如果用户只有一个问题要添加到数据库中,那么这很好,因为当我在数据库中插入这个问题时,它会在数据库中插入这个问题 但问题是,如果用户有两个或多个问题要插入数据库,它只会在数据库行中插入最新的问题,而不是两个问题 例如,如果我在应用程序表行中有一个问题(2+2是什么),那么它将在数据库中显示以下内容: SessionId QuestionConten

我有一个应用程序,用户可以编写一些问题,并将其添加到应用程序的表行中(每个问题都进入每一行)。用户写完问题后,可以将这些问题添加到数据库中

现在,如果用户只有一个问题要添加到数据库中,那么这很好,因为当我在数据库中插入这个问题时,它会在数据库中插入这个问题

但问题是,如果用户有两个或多个问题要插入数据库,它只会在数据库行中插入最新的问题,而不是两个问题

例如,如果我在应用程序表行中有一个问题(2+2是什么),那么它将在数据库中显示以下内容:

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代码。