这就是我的问题:我想把这个查询放到存储过程中:
select col1,col2 from var1 where site_cluster = var2;
我创建的过程如下:
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中,我做到了:
###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中工作。任何想法都会很受欢迎。谢谢。
发布于 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')
相反,如果上面的方法不起作用。
https://stackoverflow.com/questions/49057430
复制相似问题