Php 在MySQL的表中插入多个选项

Php 在MySQL的表中插入多个选项,php,mysql,html,database,arrays,Php,Mysql,Html,Database,Arrays,我有一个可以在php中获得多种选择。之后,我使用POST方法将其放入变量中,并尝试至少回显数组,以确保我的变量$authors具有选择权,但它会打印此错误 警告:为第45行C:\xampp\htdocs\ex\addBook.php中的foreach()提供的参数无效 这是我的密码: <?php include ("includes/connections.php"); $authors = $_POST["authors"]; foreach ($authors

我有一个
可以在php中获得多种选择。之后,我使用
POST
方法将其放入变量中,并尝试至少回显数组,以确保我的变量
$authors
具有选择权,但它会打印此错误

警告:为第45行C:\xampp\htdocs\ex\addBook.php中的foreach()提供的参数无效

这是我的密码:

<?php
    include ("includes/connections.php");
    $authors = $_POST["authors"];
    foreach ($authors as $author) 
    {
        echo $author;
    }
?>

以下是我在html中的“选择多个”:

<?php multiple("author_ID", "author_firstname", "author_lastname", "author", "author_lastname", "authors"); ?> <span style="font-size: 12px; color: #666;">(Keep down Ctrl for selecting multiple authors)</span>
(按住Ctrl键可选择多个作者)
以下是多重功能:

<?php include ("includes/connections.php");
    function multiple($intIdField, $strfNameField, $strlNameField, $strTableName, $strOrderField, $strNameOrdinal, $strMethod="asc") {
       echo "<select multiple=\"multiple\" name=\"$strNameOrdinal\">\n";

       $strQuery = "select $intIdField, $strfNameField, $strlNameField
                   from $strTableName
                   order by $strOrderField $strMethod";

       $rsrcResult = mysql_query($strQuery);

       while($arrayRow = mysql_fetch_assoc($rsrcResult)) {
          $strA = $arrayRow["$intIdField"];
          $strB = $arrayRow["$strlNameField"] . " " . $arrayRow["$strfNameField"];    
          echo "<option value=\"$strA \">$strB</option>\n";
       }

       echo "</select>";
    }
?>

所以我想,
$authors
变量应该是一个数组,我很乐意至少打印出来,但正如我已经说过的那样,这不会发生


从数据库中提取的作者显示正确,没有任何问题。问题是,我希望从“select multiple”列表中选择的那些内容能够被回显出来。

HTML中的multiple select的名称需要以“[]”结尾,以表示它是一个数组,然后在php中运行foreach循环时,确保它正在接收一个数组,因此需要设置它,或者,您需要将单个值类型转换为数组。我很确定你的问题在于如何设置name属性


HTML中的多重选择的名称需要以“[]”结尾,以表示它是一个数组,然后在php中运行foreach循环时,确保它正在接收数组,因此需要对其进行设置,或者需要将单个值键入数组。我很确定你的问题在于如何设置name属性


由于某种原因,
$authors
数组未填充。你真的应该检查这个条件以避免出现错误。我如何从一个数组中填充“$authors”在这个线程上尝试答案:我尝试了好几次,但都不起作用..也许我在函数中声明的变量是错误的或者什么的,我只是没有主意你能修改
multiple()的这部分吗
功能
name=\“$strNameOrdinal\”>
如果是这样,请将其设置为
name=\“$strNameOrdinal[]\”>
由于某种原因,
$authors
数组未被填充。你真的应该检查这个条件以避免出现错误。我如何从一个数组中填充“$authors”在这个线程上尝试答案:我尝试了好几次,但都不起作用..也许我在函数中声明的变量是错误的或者什么的,我只是没有主意你能修改
multiple()的这部分吗
功能
name=\“$strNameOrdinal\”>
如果是,则将其设置为
name=\“$strNameOrdinal[]\”>