加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MySQL:将参数传递给storedprocedure时出现单个qoute问题

发布时间:2020-12-13 16:22:43 所属栏目:PHP教程 来源:网络整理
导读:我正在从 PHP发送一个以逗号分隔的列表到我的存储过程.存储过程如下: UPDATE RolesMenus SET Enabled=1 WHERE MenuID IN(prmMenusList) AND RoleID = prmRoleID; 现在的问题是,当我通过代码传递菜单列表(prmMenusList)时,它只更新列表中第一个元素的值.我认
我正在从 PHP发送一个以逗号分隔的列表到我的存储过程.存储过程如下:

UPDATE RolesMenus SET Enabled=1 WHERE MenuID IN(prmMenusList) AND RoleID = prmRoleID;

现在的问题是,当我通过代码传递菜单列表(prmMenusList)时,它只更新列表中第一个元素的值.我认为,这是由于列表中的一些单引号.查询可能形成如下:

UPDATE RolesMenus SET Enabled=0 WHERE MenuID IN('1,7,19,20,21,26') AND RoleID = 74;

我该如何避免这种情况?

这里我添加了CodeIgniter(PHP)代码:

Public function enableMenus($selectedMenus,$roleID){
                    $menusList = "";
                    foreach($selectedMenus as $item){
                        $menusList .= $item.",";
                    }
                    $menusList = substr($menusList,strlen($menusList)-1); // to remove the leading comma
                    $result=$this->db->query("call uspEnableMenus('".$menusList."',".$roleID.")");
                    $tempResult = $result;
                    $result->next_result();
                    return $tempResult->result();
                }

解决方法

我已经解决了这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读