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

Сервис обмена электронных валют

Партнерская программа Kredov

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

#1 Wano

Wano
  • Пользователь
  • 2 сообщений
  • Репутация: 0
0

Отправлено 31 Август 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
  • Пользователь
  • 1 176 сообщений
  • Репутация: 112

Отправлено 31 Август 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 Август 2015 - 17:18

  • 0

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



#3 Wano

Wano
    Topic Starter
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 31 Август 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 Август 2015 - 18:08

  • 0


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