[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Функция с переменным числом аргументов по ссылке
Гость_Диман
Приветствую)

Допустим, хочу перед запросом вызвать для каждой переменной (которая там участвует) функцию mysql_real_escape_string. Но отдельно для каждой писать - влом)

Хочется так:

SequreQuery($login, $name, $city);

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

Пробую:


function SecureQuery()
{
$args = func_get_args();

foreach ($args as $var)
{
$var = mysql_real_escape_string($var);
}
}



Вызывается, но исходные переменные не меняются. Можно, конечно, покопать в сторону array_walk, но там-то просто вызов функции, а надо результат сохранить.. Как подправить синтаксис? Вместо $ &$ ?



Спустя 6 минут, 41 секунда (11.05.2011 - 21:09) quickxyan написал(а):
должно меняться только последнее значение

$var = mysql_real_escape_string($var);


ты тут переписываешь одну и ту же переменную. пробуй сделать так


$var1[] = mysql_real_escape_string($var);
return $var1;


Спустя 33 минуты, 52 секунды (11.05.2011 - 21:43) Гость_Диман написал(а):
Дык тут return не поможет)

Надо чтобы срабатывало для каждого аргмента. Ну и вроде как я переписываю не одну и ту же переменную: $var это очередной элмент массива аргументов, который надо обработать посредством mysql_real_escape_string(


function SecureQuery()
{
$args = func_get_args();

foreach ($args as $var)
{
$var = mysql_real_escape_string($var);
}
}


...

$var1 = '....';
$var2 = '....';

SecureQuery($var1, $var2);


- после вызова, var1 и var2 должны измениться. Но не меняются.

Спустя 9 часов, 10 минут, 30 секунд (12.05.2011 - 06:53) Гость_Диман написал(а):
А как применить ссылки?

Спустя 53 минуты, 26 секунд (12.05.2011 - 07:47) Mirexzpalich написал(а):
Для пхп 5.х так

function SecureQuery()
{
$args = func_get_args();

foreach ($args as &$var)
{
$var = mysql_real_escape_string($var);
}
}

//Вызов функции
SecureQuery(&$var1, &$var2);


Для пхп 4.х так

function SecureQuery()
{
$args = func_get_args();
$vars = array();
foreach ($args as $key=>$var)
{
$vars[] = mysql_real_escape_string($var);
}
$agrs = $vars;
}
//Вызов функции
SecureQuery(&$var1, &$var2);

Спустя 1 час, 44 минуты, 28 секунд (12.05.2011 - 09:31) Гость_Диман написал(а):
ух-ты, спасибо)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.