Что делает '_', делают в Perl?

Если ваш столбец schools.schoolType имеет произвольный тип данных VARCHAR, должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ]

Похоже, у вас есть какая-то связь между вашим массивом arrayTypes и значением

Если ваш столбец [112] имеет произвольный тип данных [113], должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ]

Похоже, у вас есть какая-то связь между вашим массивом [114] и значением [115]. Таким образом, предполагая, что запрос требует HighSchool, это может быть обнаружено, если пользователь отправляет highschool, используя вашу функцию basictext().

Оттуда я бы сделал что-то вроде этого:

$selectedTypes = array();

foreach($arrayTypes as $arr)
{
    if(isSet(

Если ваш столбец schools.schoolType имеет произвольный тип данных VARCHAR, должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ]

Похоже, у вас есть какая-то связь между вашим массивом arrayTypes и значением

Если ваш столбец [112] имеет произвольный тип данных [113], должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ]

Похоже, у вас есть какая-то связь между вашим массивом [114] и значением [115]. Таким образом, предполагая, что запрос требует HighSchool, это может быть обнаружено, если пользователь отправляет highschool, используя вашу функцию basictext().

Оттуда я бы сделал что-то вроде этого:

[110]

Это заполнило бы массив selectedTypes соответствующими типами того, что отправляет пользователь.

Используя это, вы можете добавить предложение IN к вашему окончательному запросу.

$placeholders = implode(',', array_fill(0, count($selectedTypes), '?'));

$template = "SELECT schools.schoolId, 
                    schools.schoolName, 
                    villages.villageName 
               FROM schools, 
                    villages
              WHERE schools.villageId = villages.villageId
                AND schools.schoolType IN ($placeholders)";

$stmt = $pdo->prepare($template);
$stmt->execute($selectedTypes);
$result = $stmt->fetchAll();
$stmt = null;

Если selectedTypes содержит ["HighSchool", "MiddleSchool", "TradeSchool"], то $placeholders будет содержать [?, ?, ?]. Это используется для создания шаблона SQL для подготовленного запроса оператора с использованием массива selectedTypes в качестве входных данных.

$result должны иметь данные, которые вы ищете.

GET
. Таким образом, предполагая, что запрос требует HighSchool, это может быть обнаружено, если пользователь отправляет highschool, используя вашу функцию basictext().

Оттуда я бы сделал что-то вроде этого:

[110]

Это заполнило бы массив selectedTypes соответствующими типами того, что отправляет пользователь.

Используя это, вы можете добавить предложение IN к вашему окончательному запросу.

[111]

Если selectedTypes содержит ["HighSchool", "MiddleSchool", "TradeSchool"], то $placeholders будет содержать [?, ?, ?]. Это используется для создания шаблона SQL для подготовленного запроса оператора с использованием массива selectedTypes в качестве входных данных.

$result должны иметь данные, которые вы ищете.

GET[basictext($arr)])) { echo "[x] Type ".$arr." <br/>"; $selectedTypes[] = $arr; } else { echo "[ ] Type ".$arr." <br/>"; } }

Это заполнило бы массив selectedTypes соответствующими типами того, что отправляет пользователь.

Используя это, вы можете добавить предложение IN к вашему окончательному запросу.

$placeholders = implode(',', array_fill(0, count($selectedTypes), '?'));

$template = "SELECT schools.schoolId, 
                    schools.schoolName, 
                    villages.villageName 
               FROM schools, 
                    villages
              WHERE schools.villageId = villages.villageId
                AND schools.schoolType IN ($placeholders)";

$stmt = $pdo->prepare($template);
$stmt->execute($selectedTypes);
$result = $stmt->fetchAll();
$stmt = null;

Если selectedTypes содержит ["HighSchool", "MiddleSchool", "TradeSchool"], то $placeholders будет содержать [?, ?, ?]. Это используется для создания шаблона SQL для подготовленного запроса оператора с использованием массива selectedTypes в качестве входных данных.

$result должны иметь данные, которые вы ищете.

GET
. Таким образом, предполагая, что запрос требует HighSchool, это может быть обнаружено, если пользователь отправляет highschool, используя вашу функцию basictext().

Оттуда я бы сделал что-то вроде этого:

[110]

Это заполнило бы массив selectedTypes соответствующими типами того, что отправляет пользователь.

Используя это, вы можете добавить предложение IN к вашему окончательному запросу.

[111]

Если selectedTypes содержит ["HighSchool", "MiddleSchool", "TradeSchool"], то $placeholders будет содержать [?, ?, ?]. Это используется для создания шаблона SQL для подготовленного запроса оператора с использованием массива selectedTypes в качестве входных данных.

$result должны иметь данные, которые вы ищете.

8
задан Levi 16 January 2009 в 18:17
поделиться

4 ответа

@_ переменная является массивом, который содержит все параметры, переданные в подпрограмму.

Круглые скобки вокруг $string переменная абсолютно необходима. Они определяют это, Вы присваиваете переменные от массива. Без них, @_ массиву присваивают $string в скалярном контексте, что означает это $string было бы равно количеству параметров, переданных в подпрограмму. Например:

sub foo {
  my $bar = @_;
  print $bar;
}

foo('bar');

Вывод здесь равняется 1 - определенно не, что Вы ожидаете в этом случае.

С другой стороны, Вы могли присвоиться $string переменная, не используя @_ массив и использование shift функция вместо этого:

sub foo {
  my $bar = shift;
  print $bar;
}

Используя один метод по другому настоящий вопрос вкуса. Я задал этот самый вопрос, который можно проверить, если Вам интересно.

23
ответ дан 3 November 2019 в 12:13
поделиться

Когда Вы встречаетесь со специальным предложением (или пунктуация) переменная в Perl, проверяете perlvar документацию. Это перечисляет их всех, дает Вам английский эквивалент, и говорит Вам, что это делает.

12
ответ дан 3 November 2019 в 12:13
поделиться

Perl имеет два различных контекста, скалярный контекст и контекст списка. Массив '@_', если используется в скалярном контексте возвращает размер массива.

Так, учитывая эти два примера, первый дает Вам размер @_ массив и другой дают Вам первый элемент.

my  $string   = @_ ;
my ($string)  = @_ ;

Perl имеет три переменные 'По умолчанию' $_, @_, и в зависимости от того, кого Вы спрашиваете %_. Много операций будут использовать эти переменные, если Вы не дадите им переменную, чтобы продолжить работать. Единственное исключение нет никакой операции, которая в настоящее время будет использованием по умолчанию %_.

Например, мы имеем push, pop, shift, и unshift, это все примет массив как первый параметр. Если Вы не дадите им параметр, то они будут использовать переменную 'по умолчанию' вместо этого. Так'shift;'совпадает с'shift @_;'

Способ, которым были разработаны подпрограммы, Вы не могли официально сказать компилятор, который оценивает Вас требуемый в который переменные. Хорошо имело смысл просто использовать переменную типа массив 'по умолчанию''@_'для содержания аргументов.

Таким образом, эти три подпрограммы (почти) идентичны.

sub myjoin{
  my ( $stringl, $stringr ) = @_;
  return "$stringl$stringr";
}

sub myjoin{
  my $stringl = shift;
  my $stringr = shift;
  return "$stringl$stringr";
}

sub myjoin{
  my $stringl = shift @_;
  my $stringr = shift @_;
  return "$stringl$stringr";
}

Я думаю, что первый немного быстрее, чем другие два, потому что Вы не изменяете @_ переменная.

10
ответ дан 3 November 2019 в 12:13
поделиться

Переменная @_ массив (следовательно @ префикс), который содержит все параметры к текущей функции.

6
ответ дан 3 November 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: