`where in`在存储过程mysql中仅取第一个值

时间:2018-07-12 13:20:10

标签: php mysql stored-procedures laravel-5

我一直困扰于问题,并且自6个小时以来一直在寻找解决方案。

我正在使用PHP调用存储过程,以通过传递一堆用户ID来获取不同用户的任务。 我的用户ID以,分隔。

$user_id_string = "59,49";  // The user IDs have been converted as string using implode function on an array.
$d = DB::select(DB::raw('call fetch_tasks("'.$user_id_string.'")'));

存储过程只有一个简单的查询,例如:

select firstname from users where id in (uids)

在这里,我已将uid声明为varchar(255)作为IN参数。

问题

调用该函数时,我得到firstname的用户ID59。如果我对(SP)中的值进行硬编码,例如(59,49),我将获得两个用户的名字。

期望

两者均应返回firstname

请,请帮助我。

更新1:

Hard coded:

CREATE DEFINER=`root`@`localhost` PROCEDURE `fetch_tasks`(IN `cur_lat` VARCHAR(255), IN `cur_lng` VARCHAR(255), IN `uids` VARCHAR(255)) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER SELECT id, firstname from users where id in (59,49)

By passing variable:

CREATE DEFINER=`root`@`localhost` PROCEDURE `fetch_tasks`(IN `cur_lat` VARCHAR(255), IN `cur_lng` VARCHAR(255), IN `uids` VARCHAR(255)) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER SELECT id, firstname from users where id in (uids)

1 个答案:

答案 0 :(得分:-1)

您可以将ID存储在列表中,然后使用foreach来获取其名字,如下所示:

cell.myButton.addTarget(self, action: #selector(myButtonTapped), for: .touchUpInside)

@objc func myButtonTapped(_ sender: UIButton) {
    let buttonPosition : CGPoint = sender.convert(sender.bounds.origin, to: self.collectionView)
}

看看这个链接:SQL WHERE ID IN (id1, id2, ..., idn)