[英]PHP echo query result in Class?
我有一個關於PHP類的問題。 我試圖通過PHP從Mysql獲取結果。 我想知道最佳做法是在類中顯示結果還是存儲結果並在html中處理它。
例如,在Class中顯示結果
class Schedule {
public $currentWeek;
function teamQuery($currentWeek){
$this->currentWeek=$currentWeek;
}
function getSchedule(){
$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
if (!$connection) {
die("Database connection failed: " . mysql_error());
}
$db_select = mysql_select_db(DB_NAME,$connection);
if (!$db_select) {
die("Database selection failed: " . mysql_error());
}
$scheduleQuery=mysql_query("SELECT guest, home, time, winner, pickEnable FROM $this->currentWeek ORDER BY time", $connection);
if (!$scheduleQuery){
die("database has errors: ".mysql_error());
}
while($row=mysql_fetch_array($scheduleQuery, MYSQL_NUMS)){
//display the result..ex: echo $row['winner'];
}
mysql_close($scheduleQuery);
//no returns
}
}
或者將查詢結果作為變量返回並在php中處理
class Schedule {
public $currentWeek;
function teamQuery($currentWeek){
$this->currentWeek=$currentWeek;
}
function getSchedule(){
$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
if (!$connection) {
die("Database connection failed: " . mysql_error());
}
$db_select = mysql_select_db(DB_NAME,$connection);
if (!$db_select) {
die("Database selection failed: " . mysql_error());
}
$scheduleQuery=mysql_query("SELECT guest, home, time, winner, pickEnable FROM $this->currentWeek ORDER BY time", $connection);
if (!$scheduleQuery){
die("database has errors: ".mysql_error());
// create an array }
$ret = array();
while($row=mysql_fetch_array($scheduleQuery, MYSQL_NUMS)){
$ret[]=$row;
}
mysql_close($scheduleQuery);
return $ret; // and handle the return value in php
}
}
這里有兩件事:
我發現php中的返回變量有點復雜,因為它是二維數組。 我不確定最佳做法是什么,並想問你專家意見。
每次我創建一個新方法時,我都必須重新創建$ connection變量:見下文
$ connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS); if(!$ connection){die(“數據庫連接失敗:”。mysql_error()); }
$db_select = mysql_select_db(DB_NAME,$connection); if (!$db_select) { die("Database selection failed: " . mysql_error()); }
這對我來說似乎是多余的。 我可以只做一次,而不是在我需要查詢時隨時調用它嗎? 我是php類的新手。 希望你們能幫助我。 謝謝。
我將這些類視為“訪問者”,因此他們純粹查詢數據庫並返回結果。 這樣,任何調用它的PHP代碼都可以隨意使用它。 這可能是顯示或可能是支票或可能是更新。 這是一個很好的設計,因為它將數據存儲區與邏輯與顯示區分開,這意味着您的代碼將更加靈活。 但是,是的,它有點復雜。
關於每次重新創建連接。 這可能是也可能不是必要的。 根據您的設置,您可以創建連接池。 為了使您現在更容易,您可以抽象創建與其自己的方法的連接。 這樣,您只需在開始時調用此方法即可獲得連接句柄。 這樣可以避免在整個地方擁有相同代碼的許多副本。
如果您是PHP類的新手,我建議您對面向對象設計進行一些研究。 這將讓您了解為什么抽象某些函數是有益的,以及為什么要返回結果而不是顯示結果。
在類中回顯結果可能是個壞主意,你應該返回結果或結果集來回顯其他地方。
可以連接類的mebmer,如:
protected $_connection = null;
然后在構造函數中,您可以分配數據庫連接。 雖然通常你的數據庫連接將由另一個類包裝。
另外,如果我是你,我不會使用mysql
函數。 而是使用Mysqli或PDO_Mysql驅動程序。 默認情況下,它們以對象方式封裝所有這些功能。 然后,您可以使用自定義功能擴展這些類,而不是從頭開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.