Перейти к содержимому


Пользователь месяца
Ixman Ixman 1-й за Октябрь
Очков активности: 693 0 тем, 33 сообщения, 14 баллов репутации
Сайт: o5cat.ru
ТОП самых активных за этот месяц
  • Фотография ShowPrint
    #1

    ShowPrint (ShowPrint.ru)
    Очков активности: 96 Вне конкурса за определение пользователя месяца

  • Фотография yuran
    #2

    yuran (yurbol.ru)
    Очков активности: 82.5 0 тем, 55 сообщений, 1 балл репутации

  • Фотография Ixman
    #3

    Ixman (o5cat.ru)
    Очков активности: 72 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #4

    BLIK
    Очков активности: 51 Вне конкурса за определение пользователя месяца

  • Фотография Mandarin
    #5

    Mandarin
    Очков активности: 42 0 тем, 28 сообщений, 1 балл репутации

  • Фотография WGN
    #6

    WGN (worldgamenews.com)
    Очков активности: 39 Вне конкурса за определение пользователя месяца

  • Фотография pozitron123
    #7

    pozitron123
    Очков активности: 31.5 2 темы, 15 сообщений, 1 балл репутации

  • Фотография алексс
    #8

    алексс
    Очков активности: 27 2 темы, 12 сообщений, 1 балл репутации

  • Фотография Scool
    #9

    Scool (stostory.ru)
    Очков активности: 18 3 темы, 3 сообщения, 1 балл репутации

  • Фотография Mariko
    #10

    Mariko
    Очков активности: 16.5 1 тема, 8 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 31.10.2018
  • Яндекс выдача: 15.11.2018
Топ 5 участников по репутации


Не передаётся $значение в function()

#1 Wano

Wano
  • Неактивные
  • 2 сообщений
  • Репутация: 0
0

Отправлено 31 August 2015 - 15:41

Заране извиняюсь за, наверное, глупый вопрос, но недавно мигрировал на ПХП с одного древнего и 100% несовмесимого языка ныне мёртвой платформы.

Надеюсь, вашей помощью и своими кривыми мозгами смогу спрямить руки и начать писать работопргодный код.

 

Имею код, который выносит мне мозг. На одной странице есть функция и код, её инициализирующий. Проядок в коде сохранён.

FUNCTION test($test_mysql_request_result)
	{//================ TESTING ================//
	$msg .= '<br /><br />================ TESTING ================';
		$msg .= '<br /><b>MYSQL REQUEST SUCCESSFUL!</b><br />';
		while ($db_field = mysqli_fetch_assoc($test_mysql_request_result))
			{
				var_dump($db_field);
				// Берём и назначаем в переменные кучу всяких параметров
				$test_id = $db_field['id'];
				$test_name = $db_field['name'];
			}
		$msg .= '<br />|||'. $test_id .'|||<br />';
		$msg .= '<br />|||'. $test_name .'|||<br />';
		$msg .= '<br /><b><span style="color: green;">EVERYTHING WORKS!!!</span></b><br />';
	$msg .= '================ TESTING - END ================<br /><br />';
	//================ TESTING - END ================//
	echo $msg;
	return $msg;
	}
if ($test_mysql_request_result = mysqli_query($con, $sql))
		{
			$msg = test($test_mysql_request_result);
		}
		else
		{
			$msg .= '<br /><b>NO MYSQL REQUEST RESULT!!!</b><br />';
		}
		echo $msg;

Суть беды:

0. $test_mysql_request_result = mysqli_query($con, $sql), возврашает array. Гарантированно: если ("echo $sql;" -> "ctrl+ins/shift+ins" >> PMA sql) || (var_dump($test_mysql_request_result)), то всё ок.

1. $msg = test($test_mysql_request_result);

// формирую сообщение, но для этого...

1а. test($test_mysql_request_result);

// вызываю ункцию

1а1. FUNCTION test($test_mysql_request_result)

//функция присваивает локальной $test_mysql_request_result значение со своего входа.

1а2. while ($db_field = mysqli_fetch_assoc($test_mysql_request_result)){...};

// пролетает мимо, ибо $test_mysql_request_result уже пустая.

2. echo $msg - выводит, ессно, только обвес, без занчений.

 

Как говорится, ЧЯДНТ?


 

 

  • 0

#2 Info-Mans

Info-Mans
  • Пользователь
  • 1241 сообщений
  • Репутация: 124

Отправлено 31 August 2015 - 17:17

$test_mysql_request_result = mysqli_query($con, $sql) не отдает массив (array), а отдает объект.

 

Чтобы принять в массив надо:

$items = mysqli_fetch_all($test_mysql_request_result, MYSQLI_ASSOC);

Сообщение отредактировал Info-Mans: 31 August 2015 - 17:18

  • 0

»»» Начни изменять свою жизнь с внешнего вида «««
        Буду рад вашим комментариям на блоге!



#3 Wano

Wano
    Topic Starter
  • Неактивные
  • 2 сообщений
  • Репутация: 0

Отправлено 31 August 2015 - 17:55

@Info-Mans,

 

 
$items = mysqli_fetch_all($test_mysql_request_result, MYSQLI_ASSOC);

У меня в одном массиве (ибо автоматизация) должны висеть примерно 180 значений (9 объектов по 20 полей каждый) Потому отдавать в функцию в таком виде - нерационально.

Для это в функции стоит:

while ($db_field = mysqli_fetch_assoc($test_mysql_request_result)

Вместе с тем, наблюдается интересный глюк: после того, как я добавил так:

if ($test_mysql_request_result = mysqli_query($con, $sql))
{
	$msg = test($test_mysql_request_result);
}
else
{
	$msg .= '<br /><b>NO MYSQL REQUEST RESULT!!!</b><br />';
}
echo $msg;
while ($db_field = mysqli_fetch_assoc($test_mysql_request_result))
{
	var_dump($db_field);
	// Берём и назначаем в переменные кучу всяких параметров
	$test_id = $db_field['id'];
	$test_name = $db_field['name'];
}

...значение в функции присвоилось!

Я не понимаю, как код ниже вообще может взимодействовать с кодом выше.

 

UPD:

Выявлена зависимость от переменной $_SESSION['id'].

Покопаю-ка я это направление. Если вдруг что найдётся - отпишусь.


Сообщение отредактировал Wano: 31 August 2015 - 18:08

  • 0



Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru