-1

我查看了其他几个关于如何在 WHERE 子句中使用数组的条目,但我找不到适合我的解决方案。我想要做的是创建一个基于包含 $_SESSION 变量的记录集的动态值的下拉菜单。

我想要它做的是在下拉菜单中列出特定教师能够教授的可能课程(因此该列表取决于登录系统的教师)。所有需要的会话变​​量本身都可以正常工作,只要我在查询中输入的会话变量是单个结果字符串,就没有任何问题。但是一旦我在我的变量中遇到一个数组,这就是我出错的地方。

我在其他帖子上读到,为了在 WHERE 子句中使用数组,我必须创建一个函数来将数组转换为字符串,如下所示:

$subjectareajoin = implode(',', $_SESSION['SubjectArea']);


Recordset 的查询如下:

 $query_classlist = "SELECT DISTINCT Class FROM $table_name
 WHERE SubjectArea IN ('$subjectareajoin') AND CentreNo LIKE '".$_SESSION['CentreNo']."'
 ORDER BY Class ASC";
 $classlist = mysql_query($query_classlist) or die(mysql_error());
 $row_classlist = mysql_fetch_assoc($classlist);
 $totalRows_classlist = mysql_num_rows($classlist)


但它一直告诉我数组到字符串的转换存在错误:

Notice: Array to string conversion in path\addteachertest.php on line 28


这是创建主题区域数组的初始查询:

$query_subjectarea = mysql_query("SELECT DISTINCT SubjectArea FROM $table_name
WHERE Initials = '".$_SESSION['Initials']."'
AND staff LIKE '%".$_SESSION['Surname']."'") or die(mysql_error());
$query_subjectarea_array = array();
while($row_query_subjectarea = mysql_fetch_array($query_subjectarea))
$query_subjectarea_array[] = $row_query_subjectarea;


这是 var_dump($query_subjectarea_array):

array(1) { [0]=> array(2) { [0]=> string(15) "Expressive Arts" ["SubjectArea"]=> string(15) "Expressive 
Arts" } }


如果有人能告诉我我的方法有什么问题,那就太好了。提前谢谢了!

4

1 回答 1

0

请检查您尝试内爆的项目实际上是一个数组,或者它是否是一个数组的数组。您可以使用

echo"<pre>";
 print_r($_SESSION['SubjectArea']);
echo"</pre>";

似乎正在发生的事情是——

while($row_query_subjectarea = mysql_fetch_array($query_subjectarea))
    $query_subjectarea_array[] = $row_query_subjectarea; // array appended to an array which gets you an array of arrays

我相信你想要的是——

while($row_query_subjectarea = mysql_fetch_array($query_subjectarea))
    $query_subjectarea_array[] = $row_query_subjectarea['SubjectArea']; // item appended to an array which gets you an array of subjects
于 2013-10-14T11:03:30.617 回答