这就是我通常使用数据库信息运行循环的方法
$query = "SELECT * from courses ORDER BY id DESC LIMIT 4";
$stmt = $db->prepare($query);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { }
现在$row[]
可用于表示循环中的数据库信息。
我的问题是我会在单独的while循环中大量使用这个查询。但是,我不希望每次需要时都要完成此语句,因此我希望函数能够引用所需的任何变量。
例如,我试过了。
function retrieve_assoc_array_limit4($table) {
$user = '***';
$pass = '***';
$db = new PDO('mysql:host=localhost;dbname=***', $user, $pass);
$query = ("SELECT * FROM ? ORDER BY id DESC LIMIT 4");
$stmt = $db->prepare($query);
$stmt->bindValue(?, $table);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
return $row;
}
但是当我尝试时,我会获得无限量的同样信息的回报。
while($row = retrieve_assoc_array_limit4($table_name)) {
exho $data;
}
我的问题是如何在逻辑上使用函数中的第一个代码,这样我就可以在不使用完整语句的情况下同时使用它。
答案 0 :(得分:0)
这样做的方法很多,只需稍加改动即可使用您的代码:
调用fetchAll()而不是fetch():
function retrieve_assoc_array_limit4($table) {
$user = '***';
$pass = '***';
$db = new PDO('mysql:host=localhost;dbname=***', $user, $pass);
$query = ("SELECT * FROM ? ORDER BY id DESC LIMIT 4");
$stmt = $db->prepare($query);
$stmt->bindValue(?, $table);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $rows;
}
然后调用你的函数并做一段时间或预约:
$rows = retrieve_assoc_array_limit4($table_name);
foreach($rows as $row){
//do your stuff
}