Если ваш столбец schools.schoolType
имеет произвольный тип данных VARCHAR
, должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ]
Похоже, у вас есть какая-то связь между вашим массивом Если ваш столбец [112] имеет произвольный тип данных [113], должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ] Похоже, у вас есть какая-то связь между вашим массивом [114] и значением [115]. Таким образом, предполагая, что запрос требует Оттуда я бы сделал что-то вроде этого: Если ваш столбец Похоже, у вас есть какая-то связь между вашим массивом Если ваш столбец [112] имеет произвольный тип данных [113], должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ] Похоже, у вас есть какая-то связь между вашим массивом [114] и значением [115]. Таким образом, предполагая, что запрос требует Оттуда я бы сделал что-то вроде этого: Это заполнило бы массив Используя это, вы можете добавить предложение Если Оттуда я бы сделал что-то вроде этого: Это заполнило бы массив Используя это, вы можете добавить предложение Если Это заполнило бы массив Используя это, вы можете добавить предложение Если arrayTypes
и значением
. Таким образом, предполагая, что запрос требует HighSchool
, это может быть обнаружено, если пользователь отправляет highschool
, используя вашу функцию basictext()
. $selectedTypes = array();
foreach($arrayTypes as $arr)
{
if(isSet(
schools.schoolType
имеет произвольный тип данных VARCHAR
, должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ] arrayTypes
и значением
. Таким образом, предполагая, что запрос требует HighSchool
, это может быть обнаружено, если пользователь отправляет highschool
, используя вашу функцию basictext()
. 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
должны иметь данные, которые вы ищете. HighSchool
, это может быть обнаружено, если пользователь отправляет highschool
, используя вашу функцию basictext()
. selectedTypes
соответствующими типами того, что отправляет пользователь. IN
к вашему окончательному запросу. selectedTypes
содержит ["HighSchool", "MiddleSchool", "TradeSchool"]
, то $placeholders
будет содержать [?, ?, ?]
. Это используется для создания шаблона SQL для подготовленного запроса оператора с использованием массива selectedTypes
в качестве входных данных. $result
должны иметь данные, которые вы ищете. 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
должны иметь данные, которые вы ищете. HighSchool
, это может быть обнаружено, если пользователь отправляет highschool
, используя вашу функцию basictext()
.
Оттуда я бы сделал что-то вроде этого:
[110] Это заполнило бы массив selectedTypes
соответствующими типами того, что отправляет пользователь.
Используя это, вы можете добавить предложение IN
к вашему окончательному запросу.
Если selectedTypes
содержит ["HighSchool", "MiddleSchool", "TradeSchool"]
, то $placeholders
будет содержать [?, ?, ?]
. Это используется для создания шаблона SQL для подготовленного запроса оператора с использованием массива selectedTypes
в качестве входных данных.
$result
должны иметь данные, которые вы ищете.
@_
переменная является массивом, который содержит все параметры, переданные в подпрограмму.
Круглые скобки вокруг $string
переменная абсолютно необходима. Они определяют это, Вы присваиваете переменные от массива. Без них, @_
массиву присваивают $string
в скалярном контексте, что означает это $string
было бы равно количеству параметров, переданных в подпрограмму. Например:
sub foo {
my $bar = @_;
print $bar;
}
foo('bar');
Вывод здесь равняется 1 - определенно не, что Вы ожидаете в этом случае.
С другой стороны, Вы могли присвоиться $string
переменная, не используя @_
массив и использование shift
функция вместо этого:
sub foo {
my $bar = shift;
print $bar;
}
Используя один метод по другому настоящий вопрос вкуса. Я задал этот самый вопрос, который можно проверить, если Вам интересно.
Когда Вы встречаетесь со специальным предложением (или пунктуация) переменная в Perl, проверяете perlvar документацию. Это перечисляет их всех, дает Вам английский эквивалент, и говорит Вам, что это делает.
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";
}
Я думаю, что первый немного быстрее, чем другие два, потому что Вы не изменяете @_
переменная.
Переменная @_
массив (следовательно @
префикс), который содержит все параметры к текущей функции.