我想獲得關於構建一些(基本)php代碼的建議。我應該去數據庫一次並獲取所有數據或兩次,並獲得我所需要的每一次
我需要顯示不同地方的表中的數據。需要在每個部分中顯示的行可以通過標誌來標識。
我不確定是否最好的方法是去數據庫一次,並將數據分成兩個變量,因爲我循環它或如果我應該去數據庫兩次,使用SQL來調用只我每次需要的數據。
對於那些誰希望看到它在代碼:
方法A:
// Create and execute a MySQL query
function tasks_not_done(){
// Open a PDO dtabase connection
$link = new PDO(DB_INFO, DB_USER, DB_PASS);
$sql = " SELECT title, created_date
FROM todos
WHERE list_id = ? AND checked = '0'
ORDER BY created_date DESC";
$stmt = $link->prepare($sql);
$stmt->execute(array($_REQUEST['list_id']));
// loop throught all the rows
while($row = $stmt->fetch()) {
$date = strtotime($row['created_date']);
$date = date('d/m/y' , $date);
echo '<div class="task">' . "\n";
echo '<span class="taskcdtate">' .$date . '</span>'. '<span class="tasktitle"> ' . $row['title'] . ' </span>' . "\n";
echo '</div>';
}
$stmt->closeCursor();
}
方法B
function tasks_all(){
// Open a PDO dtabase connection
$link = new PDO(DB_INFO, DB_USER, DB_PASS);
$sql = " SELECT title, created_date, checked
FROM todos
WHERE list_id = ?
ORDER BY created_date DESC";
$stmt = $link->prepare($sql);
$stmt->execute(array($_REQUEST['list_id']));
// loop throught all the rows
$tasks['not_done'] = "";
$tasks['done'] = "";
while($row = $stmt->fetch("FETCH_ASSOC")) {
$date = strtotime($row['created_date']);
$date = date('d/m/y' , $date);
if($row['checked'] =='0'){
$tasks['not_done'] .= '<div class="task">' . "\n";
$tasks['not_done'] .='<span class="taskcdtate">' .$date . '</span>'. '<span class="tasktitle"> ' . $row['title'] . ' </span>' . "\n";
$tasks['not_done'] .='</div>';
} elseif ($row['checked'] =='1') {
$tasks['done'] .= '<div class="task">' . "\n" .
$tasks['done'] .='<span class="taskcdtate">' .$date . '</span>'. '<span class="tasktitle"> ' . $row['title'] . ' </span>' . "\n";
$tasks['done'] .='</div>';
}
}
$stmt->closeCursor();
return $tasks;
}
感謝
你的方法都醜陋地獄。第一個意思是2串等於2個蛋的代碼。這在編碼風格方面是一個罪過。第二個稍微好一些,但仍然使用直接從業務邏輯回顯HTML的醜陋方法。數據庫連接在應用程序中的功能是無稽之談。等 – 2011-01-08 10:33:06