这是我的问题:我想把这个查询放到商店程序中:
从var1中选择col1,col2,其中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工作。 任何想法都会很好。 感谢。
答案 0 :(得分:0)
“呼叫”不起作用有几个原因。
最常见的是你忘了在你的mysql_connect函数中添加多语句支持。像这样:
$ this-> connection = mysql_connect($ this-> host,$ this-> user,$ this-> passw,false,65536);
这直接来自调用文档mysql https://dev.mysql.com/doc/refman/5.7/en/call.html
这是因为每个CALL都返回一个结果来指示调用状态,以及可能由过程中执行的语句返回的任何结果集
您也可以尝试
执行get_registers('var1','var2')
相反,如果上述方法不起作用。