MySQL. Работа с процедурами в PHP


Напишу небольшую заметочку о нескольких способах работы с хранимыми процедурами 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 Star2 Stars3 Stars4 Stars5 Stars (голосов 9, в среднем: 4.33 из 5)
Loading ... Loading ...


  1. #1 Lexx - Декабрь 31st, 2009 at 12:49

    Ага, но есть, мне кажется и другие варианты

  2. #2 nice - Январь 3rd, 2010 at 11:49

    конечно есть… это всего лишь обзор нескольких способов работы с процедурами

  3. #3 nois - Декабрь 3rd, 2010 at 09:24

    Спасибо Вам огромное, все четко и понятно.

  4. #4 M - Сентябрь 4th, 2013 at 11:09

    Спасибо! Флаг для процедуры в mysql_connect очень помог!

(will not be published)

Spam Protection by WP-SpamFree Plugin

  1. No trackbacks.