powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите, не работает цикл в процедуре MySQL
3 сообщений из 3, страница 1 из 1
Помогите, не работает цикл в процедуре MySQL
    #38530687
lagreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_______
Процедура сделана в phpMyAdmin поэтому её код не полный;
e - это входящий параметр;
_______
BEGIN

DECLARE c INT(5) DEFAULT 10;
DECLARE d INT(5) DEFAULT e;

CREATE TEMPORARY TABLE `temp` (a INT);
WHILE c>0 DO
INSERT INTO `temp` SELECT `a` FROM `t` WHERE `id`=d;

SELECT b INTO d FROM t WHERE id=d;
SET c=c-1;
END WHILE;
SELECT a FROM `temp`;

END
_______
Должно выводить это:
1
2
3
4
5
6
7
8
9
10
_______
Когда запускаю из PHP, выводит только это:
1
1
1
1
1
1
1
1
1
1
_______
<?php

date_default_timezone_set('Europe/Kiev');
$db = mysqli_connect ("localhost", "root", "55555");
mysqli_select_db ($db, "test");
$result = mysqli_query ($db, "CALL p(2)");
$myrow = mysqli_fetch_array ($result);

$i = 1;
while ($i <= 10) {
echo $myrow[a] . "<br>";
$i++;
}

?>
_______
_______Таблица которую SELECT_______

CREATE TABLE `t` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`a` int(11) NOT NULL,
`b` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=34 ;

--
-- Дамп данных таблицы `t`
--

INSERT INTO `t` (`id`, `a`, `b`) VALUES
(1, 5, 5),
(2, 1, 4),
(3, 4, 1),
(4, 2, 6),
(5, 6, 7),
(6, 3, 3),
(7, 7, 10),
(8, 10, 0),
(9, 9, 8),
(10, 8, 9),
(11, 11, 0);
...
Рейтинг: 0 / 0
Помогите, не работает цикл в процедуре MySQL
    #38531347
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lagreenПроцедура сделана в phpMyAdmin поэтому её код не полный;А разъясните-ка поподробнее причинно-следственную связь :)

У меня правильно работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
USE `test`;
CREATE TABLE `t` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `a` int(11) NOT NULL,
 `b` int(11) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=34 ;
/* Affected rows: 0  Found rows: 0  Warnings: 0  Duration for 1 query: 0,078 sec. */
INSERT INTO `t` (`id`, `a`, `b`) VALUES
(1, 5, 5),
(2, 1, 4),
(3, 4, 1),
(4, 2, 6),
(5, 6, 7),
(6, 3, 3),
(7, 7, 10),
(8, 10, 0),
(9, 9, 8),
(10, 8, 9),
(11, 11, 0);
/* Affected rows: 11  Found rows: 0  Warnings: 0  Duration for 1 query: 0,031 sec. */
CREATE PROCEDURE `proc_iagreen`(IN `e` INT)
	LANGUAGE SQL
	NOT DETERMINISTIC
	CONTAINS SQL
	SQL SECURITY DEFINER
	COMMENT ''
BEGIN
DECLARE c INT(5) DEFAULT 10;
DECLARE d INT(5) DEFAULT e;

 CREATE TEMPORARY TABLE `temp` (a INT);
 WHILE c>0 DO
 INSERT INTO `temp` SELECT `a` FROM `t` WHERE `id`=d;

 SELECT b INTO d FROM t WHERE id=d;
 SET c=c-1;
 END WHILE;
 SELECT a FROM `temp`;
END;

call proc_iagreen(2);
/* Affected rows: 0  Found rows: 10  Warnings: 0  Duration for 1 query: 0,500 sec. */

a12345678910Ищите ошибку в непоказанном коде.
...
Рейтинг: 0 / 0
Помогите, не работает цикл в процедуре MySQL
    #38554655
lagreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Ошибка была в цикле PHP. Я его не правильно написал, но его код показан:) Мне подсказали в другом месте.
Вот так надо было делать

while($myrow=mysqli_fetch_assoc($result)){
echo $myrow[a]."<br>";
}
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите, не работает цикл в процедуре MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]