Народ как вызвать из php хранимые процедуры или функции mysql, и чтобы после вызова результат передовался в переменные php????
1.А как вы обычно получаете данные из MySQL ? 2.А как вы исрользуете процедуры внутри MySQL не для PHP?
DarkElf, в случаях, когда выборка ведется нормальных полей, я всегда использую assoc, 440Hz кстати любительобжекта . Но когда выборка ведется дурных значений лучше юзать row, так же как SELECT COUNT(id) .... при row результат будет в $row[0] или если исподльзовать list, то list($count) = mysql_fetch_row($result) результат будет в $count при assoc результат будет в $row['COUNT(id)'] и list заюзать нельзя и что же удобнее?
Не народ, выборку это понятно все как зделать на php я имею ввиду функция выборки зделана как процедура mysql и выполняется на mysql сервере, а не php запросом. ********************* $SQL = mysql_query("SELECT id FROM online WHERE room=1"); $worker = mysql_num_rows($SQL); вот этот код это понятно обычное обращение с помощью php к mysql базе, но хранимые процедуры они находятся на серваке mysql и когда она выполняется результат ее надо передать в php? а поумолчанию он остается на серваке. вот пример я создаю на mysql следующее: delimiter // CREATE PROCEDURE simpleproc (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM t; END; Как мне зделать чтобы из php ее запустить, а не писать ее запросом php??
vb count(*) AS count_result мне так проще.. обращаясь по именам, можно потом в любой последовательности модифицировать перечисления возвратов в запросе, и нигде ничего не поедет)
Может я не правельно конечно выражаю мысль свою, вот по научному пишу. Хранимые процедуры представляют собой набор команд SQL, которые могут компилироваться и храниться на сервере. Таким образом, вместо того, чтобы хранить часто используемый запрос, клиенты могут ссылаться на соответствующую хранимую процедуру. Это обеспечивает лучшую производительность, поскольку данный запрос должен анализироваться только однажды и уменьшается трафик между сервером и клиентом. Концептуальный уровень можно также повысить за счет создания на сервере библиотеки функций. Хранимые программы (процедуры и функции) поддерживаются в MySQL 5.0. Хранимые процедуры – набор SQL-выражений, который может быть сохранен на сервере. Как только это сделано, клиенту уже не нужно повторно передавать запрос, а требуется просто вызвать хранимую программу. Это может быть полезным тогда, когда: • многочисленные приложения клиента написаны в разных языках или работают на других платформах, но нужно использовать ту же базу данных операций • безопасность на 1 месте Хранимые процедуры и функции (подпрограммы) могут обеспечить лучшую производительность потому, что меньше информации требуется для пересылки между клиентом и сервером. Выбор увеличивает нагрузку на сервер БД, но снижает затраты на стороне клиента. Используйте это, если много клиентских машин (таких как Веб-серверы) обслуживаются одной или несколькими БД. И вот я понял как это зделать на серваке mysql а как совместить чтоб результат передовался в php незнаю.
мм, в каком-то из мануалов встретил.. mysql_query("call имя_процедуры"); не проверял.. также учитывай, что работают хранимые процедуры только в mysql5
ИМХО не красиво. Если юзать as count то по моему достаточно assoc (не люблю extract - это плохая функция). А если сильно хочется вынести в переменные то row + list = assoc + extract, только list - это безопаснее (контролируемее) чем extract
Ti, например у тебя в коде используется переменная $sum, далее в какой то момент ты вспоминаешь что в каком, то запросе тебе нужно дописать к селекту sum, и получается что легко по неосмотрительности перетираешь используемую переменную $sum
Ded Karnilo http://dev.mysql.com/doc/refman/5.0/en/call.html http://dev.mysql.com/doc/refman/5.0/en/ ... dures.html
Народ всеравно туплю, вот смотрите есть процедура: CREATE PROCEDURE `simpleproc`() NOT DETERMINISTIC SQL SECURITY DEFINER COMMENT '' BEGIN select * from users where id=1; END; делаю в php вызов: $res = mysql_query("CALL simpleproc()"); далее по идее в переменной $res должны быть данные, я так понял что потом надо делать $q = mysql_fetch_array($res); есле так то почему выдается ошибка при выполнении "$q = mysql_fetch_array($res);" ???? где я прогнал подскажите плиз.
Ded Karnilo, много где мог "прогнать" . Попробуй так и скажи что за ошибка $res = mysql_query("CALL simpleproc()") or die(mysql_error());
Ну спасибо что нечего не подсказали но я нашол как это делать, выкладываю мож кому понадобится!!! PHP: <? $link = mysqli_init(); mysqli_options($link, MYSQLI_INIT_COMMAND, "SET AUTOCOMMIT=0"); mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5); mysqli_real_connect($link, $hostname, $username, $password, $dbName); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $som = 1; $query = "CALL simpleproc()"; if (mysqli_real_query($link,$query)) { if ($result2 = mysqli_store_result($link)) { while ($row = mysqli_fetch_assoc($result2)) { $q = $row["login"]; echo "$q"; } } } mysqli_close($link); ?>