У меня есть подготовленный оператор SELECT прямо в моей разметке, который повторяет следующую разметку для каждого результата:
'<div class="checkboxwrapper"><input type="checkbox" name="checkbox[]" value="' . $userid . '">' . $name . '</div>'
Наличие всего этого дополнительного кода в моей разметке кажется несколько громоздким.
Можно ли каким-то образом сохранить этот подготовленный оператор в отдельном файле, включить его в начало моей разметки, а затем просто вызвать функцию, передав ей один аргумент, в зависимости от того, какие результаты я хочу получить?
т.е .:
getresult.php
<?php
function getResults($output) {
global $db;
$stmt = $db->prepare("SELECT UserID, Name, Country FROM Dummy");
$stmt->execute();
$stmt->store_result();
$rows = $stmt->num_rows();
$stmt->bind_result($userid, $name, $country);
if($rows) {
while($stmt->fetch()) {
echo $output;
}
} else {
echo 'No Results found';
}
$stmt->close();
}
indexp.php
<?php
getResults('<div class="checkboxwrapper"><input type="checkbox" name="checkbox[]" value="' . $userid . '">' . $name . '</div>');
?>
Я не могу заставить этот код работать, я подозреваю, что он как-то связан с привязкой результатов?
В идеале я хотел бы иметь возможность вызывать функцию из разных мест и иметь возможность указать, какие результаты я хочу получить, передав аргумент.
Это возможно??
$ userid, $ name и $ country не определены в области действия функции.
Возможно, вы могли бы сделать что-то вроде этого:
<?php
function getResults($output) {
global $db;
$userid = '';
$name = '';
$country = '';
$stmt = $db->prepare("SELECT UserID, Name, Country FROM Dummy");
$stmt->execute();
$stmt->store_result();
$rows = $stmt->num_rows();
$stmt->bind_result($userid, $name, $country);
if($rows) {
while($stmt->fetch()) {
echo sprintf($output, $userid, $name, $country);
}
} else {
echo 'No Results found';
}
$stmt->close();
}
?>
и измените вызов функции на:
<?php
getResults('<div class="checkboxwrapper"><input type="checkbox" name="checkbox[]" value="%s">%s</div>');
?>
Когда вы вызываете getResults () в index.php, $ name и $ userid не определяются.
Вы должны работать с шаблоном или несколькими строками.
Передача String с переменными в качестве одного параметра функции не будет работать.