首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用变量table和更多参数从php调用mysql存储过程

问使用变量table和更多参数从php调用mysql存储过程
EN

Stack Overflow用户
提问于 2018-03-02 03:37:16
回答 1查看 22关注 0票数 0

这就是我的问题:我想把这个查询放到存储过程中:

select col1,col2 from var1 where site_cluster = var2;

我创建的过程如下:

代码语言:javascript
复制
delimiter $$
drop procedure if exists get_register$$
CREATE procedure get_registers(IN var1 VARCHAR(15),IN var2 VARCHAR(15))
BEGIN
DECLARE l_sql_stmt varchar (100);
SET @l_sql_stmt = CONCAT('SELECT col1,col2 from ',var1," where site_cluster='",var2,"'");
SELECT @l_sql_stmt;
prepare stmt from @l_sql_stmt;
execute stmt; 
END $$
DELIMITER ;

在php中,我做到了:

代码语言:javascript
复制
###connection to db is defined in other class####
$query = "call get_registers('var1','var2')"; 
    if($result = $this->connection->query($query)){
        while($row = $result->fetch_array()){
            $register_array[$row['col1']]['col2']=$row['col1'];
            $register_array[$row['col1']]['col2']=$row['col2'];
        }
        return $register_array;
    }

所以..。当执行调用get_enbs('var1',‘var2’)时,它在mysql cli中工作,我不能让它从php中工作。任何想法都会很受欢迎。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-03-02 04:31:01

“call”不起作用有几个原因。

最常见的是忘记在mysql_connect函数中加入多语句支持。如下所示:

$this->连接=mysql_connect($this->主机,$this->用户,$this->密码,false,65536);

这是直接从调用文档mysql https://dev.mysql.com/doc/refman/5.7/en/call.html获取的。

这是因为除了在过程中执行的语句可能返回的任何结果集之外,每个调用还返回一个指示调用状态的结果

您也可以尝试

Exec get_registers('var1','var2')

相反,如果上面的方法不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49057430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档