如何使用php中sql查询的结果作为另一个php函数/查询的参数
我将用户分配到特定的部门。当他们查看同一页面(/manage)时,我希望他们根据查看用户的部门获得不同的票证 为了尝试此操作,我设置了一个变量来获取查看用户的ID(对应于数据库),然后设置了另一个变量来将该值传递到我创建的名为get_department_by_user的新SQL函数的参数中:如何使用php中sql查询的结果作为另一个php函数/查询的参数,php,mysql,sql,Php,Mysql,Sql,我将用户分配到特定的部门。当他们查看同一页面(/manage)时,我希望他们根据查看用户的部门获得不同的票证 为了尝试此操作,我设置了一个变量来获取查看用户的ID(对应于数据库),然后设置了另一个变量来将该值传递到我创建的名为get_department_by_user的新SQL函数的参数中: static function get_department_by_user($userid){ $dp = SupportCenterDB::table_department(); $d
static function get_department_by_user($userid){
$dp = SupportCenterDB::table_department();
$dpu = SupportCenterDB::table_department_user();
$d=OW::getDbo();
return $d->query("
SELECT {$dpu}.department_id FROM {$dpu}
JOIN {$dp} ON {$dpu}.department_id = {$dp}.id
WHERE user_id ='".$d->escapeString($userid)."'
;");
}
下面是脚本中的变量:
$id = SupportCenterDB::get_department_by_user(OW::getUser()->getId());
...
$ticket_q = SupportCenterDB::ticket_list_manage($id);
当我检查数据库查询以加载页面时,第一个SQL函数会正常工作。它根据用户的ID获取要使用的部门类型(当用户被分配到部门时,他们将通过其ID分配到特定的部门ID)
我遇到的问题是下一个SQL函数。我想从ticket表中获取数据,其中ticket的department_id=前面的SQL函数设置的department id
static function ticket_list_manage(){
$table_ticket = SupportCenterDB::table_ticket();
$d=OW::getDbo();
$dp = SupportCenterDB::table_department();
return $d->queryForList("SELECT {$table_ticket}.id, category_id, subject,
requested_deletion, {$dp}.text, department_id, updated, status FROM {$table_ticket}
JOIN {$dp} ON {$dp}.id = {$table_ticket}.department_id
WHERE {$table_ticket}.department_id='{$id}'
ORDER BY updated DESC;");
}
现在,这不会有任何回报。当我修改它并添加一个参数时,它只返回来自部门1(id 1)的票证,但用户应该只看到部门2(id 2)。我试着改变它,但没有结果。当我检查SQL进程时,ticket\u list\u manage函数显示{$table\u ticket}.department\u id='
意味着(至少我认为)没有参数,需要传递一个参数
我的问题:如何从第一个函数(get\u department\u by\u user
)获取结果,并将其作为table\u list\u manage()的参数传递
编辑:从第二个有问题的函数中删除$userid,除了函数get\u department\u by\u user之外,它不做任何事情
例如,当我在ticket\u list\u manage()查询中更改department\u id='2'时,我会得到该部门的ticket's。如果我是适当的用户,那么当我运行由用户获取部门的查询时,我也会获取部门id='2'。我只需要知道如何将结果传递给我的另一个查询。这里的术语“SQL函数”有误导性。它们是仅使用SQL的PHP函数/方法。那么ticket\u list\u manage()
中的$userid
来自哪里?也许你想通过考试,就像在get\u department\u by\u user()
中一样?我的错,我已经讨论这个问题有一段时间了,没有从技术上考虑问题$userid当前来自$id=SupportCenterDB::get_department_by_user(OW::getUser()->getId())代码>这似乎可以通过。我以用户id 4的形式查看,它位于部门id 2中,返回部门id=2的结果。我一直在尝试将该结果放入ticket\u list\u manage()
where department\u id=''的最后一部分。$ticket\u q=SupportCenterDB::ticket\u list\u manage($id)代码>只是因为我需要一个参数。Aehm。。。确定你发的代码正确吗?没有行$id=SupportCenterDB::get_department_by_user(OW::getUser()->getId())代码>在票证列表\u manage()
中,但有一行$id=SupportCenterDB::get\u department\u by\u user($userid)代码>。而且,$userid
似乎不知从何而来(据我所知,这是第一次在这个范围内使用)。有两个文件,一个是列表所在页面的控制器,另一个是承载SQL静态函数的文件<代码>$id=SupportCenterDB::通过用户获取部门(OW::getUser()->getId())代码>位于包含列表的页面的函数中,而不在任何静态函数中。这将传递用户Id以获取部门Id(在本例中为“2”)。这很好,但控制器脚本中的行也可以使用($id)
没有返回任何内容,当我更改它时,它会按部门返回不正确的票证。因此,$id将成为$userid,它被用作变量(如op中所示),以按用户id对查询进行排序。这很有效。我无法得到结果,即department\u id=2要传递给ticket\u list\u manage()
forWHERE{$table\u ticket}。department\u id=''
EDIT:相反,$userid对函数get\u department\u by\u user之外的任何东西都没有影响。