我想清理大約15個網頁內的大量選擇查詢,我想用一個函數,然後我可以用它來調用所有不同的查詢和表,會減少一堆雜波。PHP/MYSQL查詢作爲多功能的功能
我遇到了一個問題,似乎無法找到一個方法來解決問題。
下面是函數:
function dbGet($conn, $table, $select, $where, $cond) {
require($conn);
if ($stmt = $db->prepare(" SELECT $select FROM `" . $table . "` WHERE $where=? ")) {
$stmt->bind_param("i", $cond);
$stmt->execute();
$result = $stmt->get_result();
$rowNum = $result->num_rows;
if ($rowNum > 0) {
while($data = $result->fetch_assoc()){
return $data;
}
}
$stmt->close();
} else {
die($db->error);
}
$db->close();
}
這裏是我如何調用各種不同頁面的功能:
$settings = dbGet('php/connect.php', 'settings', '*', 'userId', $sessionId);
echo $settings->toName;
我遇到的問題是,它只是顯示設置表中的第一條記錄。我認爲在函數中使用while循環會返回所有記錄。事實上,如果我爲$ data而不是return返回一個print_r,我會得到所有的記錄。我如何將所有記錄傳遞給返回的$ data以便在任何其他頁面中訪問?
或 如果你們碰巧對現有的功能有任何建議,我認爲這些功能是高度重視和真實的,我可以實現而不是自己寫,請告訴我。
謝謝。
當你'return'時,實際上是在結束該循環的第一遍該功能。這就是爲什麼你只能看到第一條記錄。 – cteski
@cteski如何才能實現這樣的功能,就像我之後的那個功能一樣?我想讓這個功能足夠靈活,我可以使用它在很多不同的情況下。 – Sergio
而不是「返回」行,也許你想「屈服」他們?請參閱http://php.net/manual/en/language.generators.syntax.php。 – localheinz