mysqli ничего не возвращает при вызове процедуры :-(

vlad275

Новичок
mysqli ничего не возвращает при вызове процедуры :-(

mysqli ничего не возвращает при вызове процедуры :-(
При вызове из MySQL Query Browser данные возвращаются.
В чем ошибка?

Код:
<?
 $hostname= 'localhost';
 $username='root';
 $password = xxx'';
 $dbName= 'db1';
 $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 pSelect2()";
 
 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); 

}
 
 
  
 ?>
 

vlad275

Новичок
OK. Сделал без наворотов:

Код:
$sql="CALL pSelect2()";
$c=mysql_connect("localhost","root","") or die ("Problem mysql_connect");
mysql_select_db("variantdialog_99k_db1") or die ("Problem mysql_select_db");
$result=mysql_query($sql) or die ("Problem mysql_query");
$f=mysql_fetch_array($result) or die ("Problem mysql_fetch_array");
$j=(sizeof($result))/64;
for ($i=0;$i<=$j;$i++)
{
 echo $r = $f[i];
}
В MySQL Query Browser'е данные возвращаются, а PHP кодом нет. Выдает "Problem mysql_query"
В чем ошибка?
 

vlad275

Новичок
Я добавил, но на экран выводится только "Problem mysql_query"

ini_set('display_errors',1);
error_reporting(E_ALL);
 

vlad275

Новичок
В error.log никаких записей на 14:00 нет
В access.log только:
127.0.0.1 - - [14/Oct/2009:14:00:32 +0400] "GET /index2.php HTTP/1.1" 200 19
127.0.0.1 - - [14/Oct/2009:14:00:32 +0400] "GET /favicon.ico HTTP/1.1" 304 -
 

Фанат

oncle terrible
Команда форума
следующий абзац

-~{}~ 14.10.09 14:03:

меня так в детстве бабушка с ложечки кормила - "за маму, за папу, за братика"...

как, однако, молодеет программирование!

-~{}~ 14.10.09 14:09:

или нет. ты уже проскочил
начинай сначала
 

vlad275

Новичок
PROCEDURE variantdialog_99k_db1.pSelect2 can't return a result set in the given context. Problem mysql_query

Почему не выдает RS? В MySQL Query Browser выдает.
 

Фанат

oncle terrible
Команда форума
во. молодец.
что нам по этому вопросу говорит гугль?
 

vlad275

Новичок
То что это очередной баг PHP. Что-нибудь можно сделать?

-~{}~ 14.10.09 14:25:

Курсор использовать?
 

Фанат

oncle terrible
Команда форума
Какой странный у тебя гугль. может, страничка поиска закэшировалась?

-~{}~ 14.10.09 14:44:

насколько я понял прочитанное в гугле, в мускуле, как в паскале, есть процедуры и есть функции.
процедуры ничего не возвращают

-~{}~ 14.10.09 14:45:

а так конечно да. кругом баги в пхп.
bind_param не работает. вообще. тыщи вебпрограммистов пишут неработающий код.
 

Фанат

oncle terrible
Команда форума
с bind_param?
извини, читаю гугль вслух для ламеров я только до 15-00 по Москве.
Обращайся завтра.
 

vlad275

Новичок
Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?
В PHPMyAdmin возващает 0 и "+"d
В таблице нет ни одного NULL. Там одна строка данных. Ниже приведены 2 скриншота. В колонках 0 и "+"


SP:
Код:
DELIMITER $$

DROP PROCEDURE IF EXISTS `p4` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`()
    SQL SECURITY INVOKER
    COMMENT 'Example'
BEGIN
 DECLARE intID INT(2);
 DECLARE varcharStatus VARCHAR(255);
 DECLARE cur1 CURSOR FOR SELECT intID,varcharStatus FROM tCandidates;

 OPEN cur1;

 FETCH  FROM cur1 INTO intID,varcharStatus;

  CREATE TABLE tTemp6 (intID  INT(2), varcharStatus VARCHAR(255));
  INSERT INTO tTemp6 VALUES (intID, varcharStatus);

 SELECT intID, varcharStatus FROM tTemp6;

 CLOSE cur1;
END $$

DELIMITER ;
-~{}~ 14.10.09 21:48:

Автор оригинала: *****
с bind_param?
извини, читаю гугль вслух для ламеров я только до 15-00 по Москве.
Обращайся завтра.
Ты меня оскорбил а сам то кто?
Во-первых, все php - программисты по общему мнению sql.ru - ламеры
Во вторых ты даже не знаешь, что хранимая процедура возвращает RS
 

vlad275

Новичок
Проблема была в переменных которые имели такие же названия как и столбцы

1)Локальные переменные имеют приоритет над параметрами процедуры и именами столбцов
2)Локальные переменные во внутренних блоках имеют приоритет над определенными во внешних
3)Параметры процедуры имеют приоритет над именами столбцов.
 
Сверху