【发布时间】:2012-04-16 10:36:22
【问题描述】:
您好,我在 php 中遇到了 foreach 函数的问题...我使用该函数将数组的结果输入到数据库中。例如,如果数组 (3,5,7),系统应在数据库中输入 3 个不同的条目。但是,就我而言,它只创建了 1 个条目,而完全忽略了其他 2 个条目。请问是否有人能发现我的错误?
我创建了一个带有复选框的表单并尝试检索值并为每个值提供一个单独的数组,例如:
<form name="appoptions" id="applicationoptions" method="post" action="s_apply_now.php">
<table width="100%" class="apptable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="checkbox" name="cat[]" value="1" /> CAT 2PG</td>
<td><input type="checkbox" name="cat[]" value="2" /> CAT 1OR</td>
<td><input type="checkbox" name="cat[]" value="3" /> CAT 2TT</td>
</tr>
<tr>
<td><input type="checkbox" name="cat[]" value="4" /> CAT 3PG </td>
<td><input type="checkbox" name="cat[]" value="5" /> CAT 2OR</td>
<td><input type="checkbox" name="cat[]" value="6" /> CAT 3TT</td>
</tr>
<tr>
<td><input type="checkbox" name="cat[]" value="7" /> CAT 4PG</td>
<td><input type="checkbox" name="cat[]" value="8" /> CAT 3OR</td>
<td> </td>
</tr>
</table>
</form>
点击确认后,将进入处理器页面。在我的处理器页面中,我试图提取该值,但我在一个数组中实现了它:
<?php
session_start();
include'Connections/database.php';
$conn = dbConnect ();
if (! $conn)
die("Couldn't connect to MySQL");
$user = $_SESSION['eid'];
$query = "select MED from emp where EID = '$user'";
$result = mysql_query($query, $conn);
$row = mysql_fetch_assoc($result);
$med = $row['MED'];
$user =$_SESSION['eid'];
$class=$_POST['class'];
$cat_arr=$_POST['cat'];
$i = 0; /* for illustrative purposes only */
foreach ($cat_arr as $cat)
{
if ($med=='no')
{
if (! $conn)
die("Couldn't connect to My SQL");
$query = "insert into permit (EID, PTYPE, STATUS) values ('$user,$cat, 'medical')";
$result = mysql_query($query,$conn);
header ('Location:medical_question.php');
$i++;
}
else
{
if (! $conn)
die("Couldn't connect to My SQL");
$query = "insert into permit (EID, PTYPE) values ('$user,$cat)";
$result = mysql_query($query,$conn);
$i++;
}
}
dbDisconnect($conn);
?>
我不确定是否每个都是错误,但我认为它就在那里......
提前致谢。
【问题讨论】:
-
首先,我不会将数据库连接放入循环中。其次,您是否遇到任何错误,您是否已转储 $cat_arr 以查看其中包含的内容?
-
有几件事...首先,您不应该在循环中连接和断开数据库。这是不必要的开销。您应该在循环之前连接并在之后断开连接。其次,我们看不到
$med是什么。尝试这样做:var_dump($cat_arr); var_dump($med);在循环之前查看它包含的内容。 -
@Travesty3 对不起,伙计们...我从来没有包含整个代码...我已经添加了...您介意简要解释一下 car_dump 的用途吗?因为php手册网站不是很清楚……我不太明白。
-
@Hubert:
var_dump基本上会输出一个变量的内容。它非常适合调试目的。如果你var_dump一个数组,它会吐出数组的内容。 -
@Travesty3 哦,谢谢,所以我将
var_dump($cat_arr);添加到$cat_arr=$_POST['cat'];的下方,或者没有我需要放置的特定位置?
标签: php database arrays foreach