在 WHERE 子句中使用 $_SESSION 数组以在下拉菜单中使用


Using $_SESSION array in WHERE clause to use in dropdown menu?

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

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

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

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

记录集的查询如下所示:

 $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" } }

如果有人能告诉我我的方法有什么问题,那将是伟大的。提前非常感谢!

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

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