Передача аргументов PHP в подготовленный оператор вызова функции не работает

У меня есть подготовленный оператор 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>');
?>

Я не могу заставить этот код работать, я подозреваю, что он как-то связан с привязкой результатов?

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

Это возможно??

0

Решение

$ 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>');
?>
0

Другие решения

Когда вы вызываете getResults () в index.php, $ name и $ userid не определяются.

Вы должны работать с шаблоном или несколькими строками.

Передача String с переменными в качестве одного параметра функции не будет работать.

0

По вопросам рекламы [email protected]