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[]\”>