Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php中sql查询的结果作为另一个php函数/查询的参数_Php_Mysql_Sql - Fatal编程技术网

如何使用php中sql查询的结果作为另一个php函数/查询的参数

如何使用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

我将用户分配到特定的部门。当他们查看同一页面(/manage)时,我希望他们根据查看用户的部门获得不同的票证

为了尝试此操作,我设置了一个变量来获取查看用户的ID(对应于数据库),然后设置了另一个变量来将该值传递到我创建的名为get_department_by_user的新SQL函数的参数中:

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()
for
WHERE{$table\u ticket}。department\u id=''
EDIT:相反,$userid对函数get\u department\u by\u user之外的任何东西都没有影响。