【发布时间】:2012-06-11 21:13:48
【问题描述】:
您好,我正在使用 foreach 将一本书的多个作者插入到我的数据库中。
这是foreach:
foreach ($_POST["authors"] as $author)
{
$sqlAuthor = "INSERT INTO book_author (book_ISBN, author_ID)
VALUES('$isbn','$author')";
mysql_query($sqlAuthor);
}
我正在从我的页面中获取带有select multiple 的作者,为此我创建了一个函数以在select multiple 中显示可用的作者。
代码正在生成我希望它从我的数据库(所有作者的姓名)在页面中生成的内容
这里是multiple() 函数:
<?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>";
}
?>
现在由于某种原因它抛出以下错误:
Notice: Undefined index: authors in C:\xampp\htdocs\ex\addBook.php on line 63
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\ex\addBook.php on line 63
我认为它告诉我它找不到 authors 数组,但我觉得很奇怪
这里是调用multiple()函数的html里面的php代码:
<?php multiple("author_ID", "author_firstname", "author_lastname", "author", "author_lastname", "authors"); ?>
有人知道我的代码有什么问题吗?
【问题讨论】:
-
请停止使用古老的 MySQL 扩展编写新代码:它不再维护,社区已开始 deprecation process;您可以改用改进的MySQLi 扩展或PDO 抽象层。
-
您的代码容易受到 SQL 注入的攻击。您真的应该使用prepared statements,将变量作为不获得 SQL 评估。如果你不知道我在说什么,或者如何解决它,请阅读 Bobby Tables 的故事。
-
您是否查看过您的代码生成的 HTML 以确保它产生了您期望的结果?
标签: php mysql html database foreach