好吧,我从来没有使用过动态函数,不知道为什么,我从不喜欢使用explode()、implode()等。
但我试过了,但出了点问题。
public function fetch($table, array $criteria = null)
{
// The query base
$query = "SELECT * FROM $table";
// Start checking
if ($criteria) {
$query .= ' WHERE ' . implode(' AND ', array_map(function($column) {
return "$column = ?";
}, array_keys($criteria)));
}
$check = $this->pdo->prepare($query) or die('An error has occurred with the following message:' . $query);
$check->execute(array_values($criteria));
$fetch = $check->fetch(PDO::FETCH_ASSOC);
return $fetch;
}
这是我的查询。
基本上我将返回$fetch
包含 fetch 方法的变量。
然后在某个地方,我想使用 while 循环来获取数据,我将使用它:
$r = new Database();
while ($row = $r->fetch("argonite_servers", array("server_map" => "Wilderness")))
{
echo $row['server_map'];
}
现在,我没有收到任何错误,但是浏览器一直在加载和加载,最终会由于内存不足而卡住。
那是因为循环在不停地运行和运行。为什么要这样做?我怎样才能让这个动态查询工作?
编辑:
$r = new Database();
$q = $r->fetch("argonite_servers", array("server_map" => "Wilderness"));
while ($row = $q->fetch(PDO::FETCH_ASSOC))
{
echo $row['server_map'];
}