Напишу небольшую заметочку о нескольких способах работы с хранимыми процедурами mysql в php.
1) Извращенный способ mysql_query.
Сначала подключаемся к mysql:
$con = mysql_connect("HostName","UserName","Password",0,131073);
Как вы уже заметили в последний параметр client_flags я передаю специальный флаг для работы с процедурами. Без него результата небудет.
Затем выбираем базу с которой будем работать:
mysql_select_db("BaseName");
Выполняем процедуру:
$rez=mysql_query("call test_proc();");
2) Выполнение процедур более изящней с помошью mysqli:
Подключаемся к mysql и выбираем базу:
стиль ООП:
$mysqli = new mysqli("HostName","UserName","Password","BaseName”,port);
процедурный стиль:
$mysqli = mysqli_connect("HostName","UserName","Password","BaseName”);
Выполняем процедуру:
стиль ООП:
$rez = $mysqli->query("call test_proc();");
процедурный стиль:
$rez= mysqli_query("call test_proc();",$mysqli);
p.s. Иногда вызов нескольких процедур может вызвать «Commands out of sync» из-за необработанного результата в памяти. Чтоб этого избежать, перед выполнением процедуры добавьте это:
while($mysqli->next_result()) $mysqli->store_result();Что дочистит неиспользуемые вами данные.
3) Просто PDO (PHP Data Objects):
Подключение:
$db = new PDO("mysql:dbname=BaseName;host=HostName;port=3306", "UserName", "Password",array( необязатльные параметры ));
Выполняем процедуру:
$db->query("call test_proc();",PDO::FETCH_NAMED)

#1 - Декабрь 31st, 2009 at 12:49
Ага, но есть, мне кажется и другие варианты
#2 nice - Январь 3rd, 2010 at 11:49
конечно есть… это всего лишь обзор нескольких способов работы с процедурами