Програмування → Використання stored procedure в MySQL

MySQL

Що ж, продовжу тему MySQL.

По роботі пишу невелику програму обліку, де і юзається бд мускул. Щоб трохи спростити собі життя, рішив заюзати stored procedure (доступні з версії MySQL 5.1), так як є досвід використання їх в MS SQL. Тут мене і чекала біда.

Після виконання stored procedure

CALL test1;

будь які наступні запити відвалюються з помилкою “Commands out of sync; you can’t run this command now”

Довге гугління ні до чого не привело, поки випадково не натрапив на пост хабраюзера smartov, за який йому велике спасибі.

Причина ось у чому:

Хоч моя процедура test1 і була мінімальною

SELECT 1;

але повертає вона два результати, точніше два mysql ресурси. Перший — це 1, власне те, що я і очікував, а другий — результат виконання запиту, true або false. Відповідно перший результат я забирав, а другий так і лишався висіти в буфері, саме тому MySQL і матюкався на мене.

Щоб уникнути таких проблем, піся тогя як забрали першей рузультат, потрібно скинути непотрібні, витянувши їх з буфера таким методом:

//$mysqli – це об'єкт MySQLI
while($mysqli->next_result()) $mysqli->store_result();

За мотивами www.habrahabr.ru

Теги: ,
15.07.2009 17:20 Автор: Strange_V Хіти: 204

Напишіть відгук