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


Пользователь месяца
TimurR TimurR 1-й за Август
Очков активности: 726 3 темы, 35 сообщений, 11 баллов репутации
ТОП самых активных за этот месяц
  • Фотография ShowPrint
    #1

    ShowPrint (ShowPrint.ru)
    Очков активности: 207 2 темы, 17 сообщений, 6 баллов репутации

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

    Ixman (o5cat.ru)
    Очков активности: 90 0 тем, 10 сообщений, 6 баллов репутации

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

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

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

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

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

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

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

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

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

    AnnaYa (topbase.ru)
    Очков активности: 33 2 темы, 5 сообщений, 2 балла репутации

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

    Алексей111
    Очков активности: 28.5 5 тем, 4 сообщения, 1 балл репутации

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

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

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

    fedornabilkin (zaka4ano.ru)
    Очков активности: 24 0 тем, 4 сообщения, 4 балла репутации

  • Показать весь ТОП 10

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 19.11.2017
  • Яндекс выдача: 24.09.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