Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

никак не получается вызвать сторедпроцедуру из пхп (call Proc_Name())
Author Message
call Proc_Name()
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Sep 30, 2009 1:20 pm (написано за 8 минут 10 секунд)
   Post subject: никак не получается вызвать сторедпроцедуру из пхп
Reply with quote

доброго дня!
установил стандартный пакет Денвер3

создал в МуСКЛ сторед-процедуру
Code (SQL): скопировать код в буфер обмена
CREATE DEFINER = 'root'@'localhost'
PROCEDURE MyHomeFinance.test()
BEGIN
  SELECT 1;
END
пытаюсь вызвать из консоли МуСКЛ
Code (SQL): скопировать код в буфер обмена
USE MyHome;
call test();
возвращает все корректно

при попытке вызвать ее же из ПХП выдает ошибку
Quwery Error (1312) PROCEDURE myhome.test can't return a result set in the given context

вызываю так
класс вызова МуСКЛ
Code (php): скопировать код в буфер обмена
<?php
//---------------------------------------------------------------------------------------
# keywords: stored procedure result set mysql mysqli php php5
class TMyBD{

        protected $sqli;
        protected $conn;
        protected $rslt;
        private $countR;

        private $dbhost;
        private $dbbase;
        private $dbuser;
        private $dbpass;

        public function __construct($host, $base, $user, $pass)
                {
                        if(!empty (www.php.net/empty)($host)) $this->dbhost = $host; else $this->dbhost = "localhost";
                        if(!empty (www.php.net/empty)($base)) $this->dbbase = $base; else $this->dbbase = "MyHome";
                        if(!empty (www.php.net/empty)($user)) $this->dbuser = $user; else $this->dbuser = "MyHomeUser";
                        if(!empty (www.php.net/empty)($pass)) $this->dbpass = $pass; else $this->dbpass = "User";
                        $this->connect();
                }
        private function connect()
                {
                        $this->countR=0;
                        $this->sqli = mysqli_init();
                        if(!$this->sqli){die (www.php.net/die)("sqli init failed");}
                        //options
                        if
                        (
                                !$this->sqli->options(MYSQLI_INIT_COMMAND, "SET AUTOCOMMIT=0")||
                                !$this->sqli->options(MYSQLI_INIT_COMMAND, "SET character_set_database = cp1251")||
                                !$this->sqli->options(MYSQLI_INIT_COMMAND, "SET NAMES cp1251")||
                                !$this->sqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)
                        ){die (www.php.net/die)('Setting sqli options failed');}
                        //connect
                        $this->conn=$this->sqli->real_connect($this->dbhost,"root","",$this->dbbase);
                        if(!$this->conn)
                        {die (www.php.net/die)('Connect Error ('.$this->sqli->connect_errno().') '.$this->sqli->connect_error());}
                }
        public function close()
                {
                        mssql_close($this->init);
                }
        public function query($query)
                {
                        echo (www.php.net/echo) "SV=".$this->sqli->server_info."<br/>";
                        echo (www.php.net/echo) "SV=".mysqli_get_client_info()."<br/>";
                        $this->countR=0;
                        if($this->sqli->multi_query($query))
                        {
                                //$this->rslt = new array();
                                $index=0;
                                do
                                {
                                        $this->rslt[$index]=$this->sqli->store_result();
                                        $index+=1;
                                }while($this->sqli->next_result());
                                $this->countR=$index;
                        }else{
                                echo (www.php.net/echo) "Quwery Error (".$this->sqli->errno.") ".$this->sqli->error;
                                return -1;
                        }
                       
                        return $this->countR;
                }
};

?>
собственно сам вызов
Code (php): скопировать код в буфер обмена
        $MyBD = new TMyBD("","","","");
        //........
        $MyDBExecQwery="call test()";
        $BDReturn=$MyBD->query($MyDBExecQwery);
       
        echo (www.php.net/echo) "BDReturn=".$BDReturn;
везде встречал что при использовании mysqli то все сразу заработает ))) - не помогло!
встречал также что нужна версия пхп больше 4.счемто уменя 5.0.45

что может быть еще?
Back to top
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Sep 30, 2009 1:23 pm (спустя 3 минуты; написано за 21 секунду)
   Post subject:
Reply with quote

очень нужна помощь!
заранее спасибо!
Back to top
EvGeniyLell
Заглянувший



Joined: 30 Sep 2009
Posts: 3
Карма: -1
   поощрить/наказать

Location: Солнечная система->Планета "Земля"->Европа-> Украина-> Днепропетровск

PostPosted: Thu Oct 01, 2009 11:06 am (спустя 21 час 42 минуты; написано за 1 минуту 55 секунд)
   Post subject:
Reply with quote

также говорят что можно через функцию mysql_set_server_option()
но денвер почемута ее незнает ...пишет Call to undefined function mysql_set_server_option()
также пытался в фунции real_connect указать флагом CLIENT_MULTI_STATEMENTS...но и это флаг он не распознал....чегото решил что это стринг
Code (php): скопировать код в буфер обмена
$this->conn=$this->sqli->real_connect($this->dbhost,"root","",$this->dbbase,0,"",CLIENT_MULTI_STATEMENTS);
Back to top
View user's profile Send private message
EvGeniyLell
Заглянувший



Joined: 30 Sep 2009
Posts: 3
Карма: -1
   поощрить/наказать

Location: Солнечная система->Планета "Земля"->Европа-> Украина-> Днепропетровск

PostPosted: Thu Oct 01, 2009 11:15 am (спустя 9 минут; написано за 14 секунд)
   Post subject:
Reply with quote

Quote:
The server didn't support mysql_set_server_option() (which is the case that the server is older than 4.1.1) or the server didn't support the option one tried to set.
ммм...это значить что эта функция не потдерживается в серверах в версиях выше 4.1.1 ?
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Oct 01, 2009 2:24 pm (спустя 3 часа 8 минут; написано за 3 минуты 35 секунд)
   Post subject:
Reply with quote

EvGeniyLell wrote:
также говорят что можно через функцию mysql_set_server_option()
Кто говорит?
EvGeniyLell wrote:
но денвер почемута ее незнает
Денвер тут ни при чём вообще.
EvGeniyLell wrote:
это флаг он не распознал....чегото решил что это стринг
поставьте числовой эквивалент.
EvGeniyLell wrote:
это значить что эта функция не потдерживается в серверах в версиях выше 4.1.1 ?
Это значит наоборот. Older - то, что старше => номер версии ниже (исключение: параллельные ветки, типа Apache 2.0 и Apache 2.2 и фраза "older then apache 2.0.59". Тут надо даты релизов сравнивать)

Last edited by Maus on Thu Oct 01, 2009 7:11 pm; edited 1 time in total
Back to top
View user's profile Send private message
EvGeniyLell
Заглянувший



Joined: 30 Sep 2009
Posts: 3
Карма: -1
   поощрить/наказать

Location: Солнечная система->Планета "Земля"->Европа-> Украина-> Днепропетровск

PostPosted: Thu Oct 01, 2009 3:16 pm (спустя 52 минуты; написано за 7 минут 3 секунды)
   Post subject:
Reply with quote

Maus wrote:
поставьте числовой эквивалент.
как узнать числовой эквивалент?
Maus wrote:
Older - то, что старше
бывает...извеняюсь..затупил
Maus wrote:
Кто говорит?
интернет!
ники я не запоминал, уж извините...
да и неважно кто говорил, для меня щас важен результат - а его нет!
Maus wrote:
Денрвер тут ни при чём вообще.
ага...не причем....только что такое денвер?
денвер это комплект! вот цитата с www.denwer.ru/about.html
Quote:
Давайте посмотрим, что же включает в себя базовый (основной) пакет Денвера:
Инсталлятор (поддерживается также инсталляция на flash-накопитель).
Apache, SSL, SSI, mod_rewrite, mod_php.
PHP5 с поддержкой GD, MySQL, sqLite.
MySQL5 с поддержкой транзакций.
Система управления виртуальными хостами, основанная на шаблонах. Чтобы создать новый хост, вам нужно лишь добавить директорию в каталог /home, править конфигурационные файлы не требуется. По умолчанию уже поддерживаются схемы именования директорий многих популярных хостеров; новые можно без труда добавить.
Система управления запуском и завершением всех компонентов Денвера.
phpMyAdmin — система управления MySQL через Web-интерфейс.
Эмулятор sendmail и SMTP-сервера (отладочная «заглушка» на localhost:25, складывающая приходящие письма в /tmp в формате .eml); поддерживается работа совместно с PHP, Perl, Parser и т.д.
теперь вы се так же утверждаете что это не денвер?
но не в этом суть...функция mysql_set_server_option все равно не распазнается в пхп коде

неужели никто не работает с сторед процедурами, из тех кто поставил денвер !?
как их заставить работать?
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Oct 01, 2009 7:11 pm (спустя 3 часа 54 минуты; написано за 7 минут 18 секунд)
   Post subject:
Reply with quote

EvGeniyLell wrote:
как узнать числовой эквивалент?
например, он упомянут в пользовательских комментариях к PHP Manual. Есть и другие варианты.
EvGeniyLell wrote:
интернет!
Весь сразу? Прямо так построился и хором скандирует.
EvGeniyLell wrote:
да и неважно кто говорил
Как раз в данном случае - важно. О вышеупомянутой функции написано в MySQL C API. Если же на dev.mysql.com в том же разделе Connectors искать информацию про PHP, то там будет написано, что в текущий момент за взаимодействие PHP и MySQL отвечает команда разработчиков PHP. Следовательно, надо идти и искать эту же функцию в PHP Manual. Но там Вы её не найдёте. Отсюда следует, там эта функция не реализована. О чём, собственно, и было сказано интерпретатором.
Поэтому и
Maus wrote:
Денвер тут ни при чём вообще.
(исправил опечатку, спасибо)
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Oct 01, 2009 7:12 pm (спустя 1 минуту)
   Post subject:
Reply with quote


М

Перенесено из форума: Базовый пакет :: Денвер.
Перенесено в форум: Разное :: PHP.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML