вызов хранимой процедуры mysql из php с переменной таблицей и другими параметрами

0

это моя проблема: я хочу поставить этот запрос в процедуру хранения:

выберите col1, col2 из var1, где 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
    Попробуйте SELECT get_registers('var1','var2');
Теги:

1 ответ

0

есть несколько причин, почему "звонок" не работает.

Чаще всего вы забыли поставить поддержку нескольких операторов в свою функцию mysql_connect. как это:

$this-> connection = mysql_connect ($this-> хост, $this-> пользователь, $this-> passw, false, 65536);

это непосредственно из документации вызова mysql https://dev.mysql.com/doc/refman/5.7/en/call.html

Это связано с тем, что каждый CALL возвращает результат для указания статуса вызова в дополнение к любым наборам результатов, которые могут быть возвращены операциями, выполненными в рамках процедуры

Вы также можете попробовать

Exec get_registers ('var1', 'var2')

вместо этого, если выше не работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню