您好我正在构建php pdo函数库,但我仍然坚持将fetchObject
返回到while循环参数。当我试图加载页面时,它只是加载和加载,而不是打印任何结果。哦,是的,我的代码:
的functions.php
function pdo_run($query, $autoval = null, $values = null) {
global $stmt;
global $db;
$values = preg_match_all("~'([^']+)'~", $query, $matches);
$stmt = $db->prepare("$query");
if (!$autoval) {
$stmt->execute($matches[0]);
}
else {
$stmt->execute($values);
}
}
function pdo_result() {
global $stmt;
if ($stmt) {
return '$stmt->fetchObject(PDO::FETCH_ASSOC)';
}
else {
trigger_error('generic ERROR: No pdo query found. Advanced info: global variable $stmt not found', E_USER_ERROR);
}
}
test.php的
pdo_run('SELECT * FROM settings');
while ($result = pdo_result()) {
echo $result['setting'] . "<br />";
echo $result['value'] . "<br />";
}
可能是什么问题?感谢您的帮助:)
答案 0 :(得分:-1)
最后我发现了如何做到这一点。我将return $stmt;
放到我的查询函数中,然后我将查询参数添加到我的pdo_result
函数中。查询函数返回语句,我在结果函数中使用它。代码:
function pdo_result($query) {
$res = $query->fetch(PDO::FETCH_ASSOC);
if (!isset($res)) {
trigger_error('PDO generic ERROR: No pdo query found', E_USER_ERROR);
}
else {
return $res;
}
}
然后我像这样使用它:
$query = pdo_run('SELECT * FROM settings');
while ($row = pdo_result($query)) {
echo $row['setting'] . ': ' . $row['value'];
}
答案 1 :(得分:-2)
以下是实现此类功能的可能方法之一。您必须返回语句,而不是使其全局化。当然,你应该避免那种可怕的自传魔法。
function pdo_run($query, $values = null)
{
global $db; // it could be questioned too, but let it be someone else
$stmt = $db->prepare($query);
$stmt->execute($values);
return $stmt;
}
$stmt = pdo_run('SELECT * FROM settings');
foreach ($stmt as $row) {
echo $row['setting'] . ": ";
echo $row['value'] . "<br />";
}