我正在學習php,目前正在使用函數。 用兩個表創建一個簡單的數據庫:Category和News。php功能與查詢優化
此外,我創建了三個函數:get_news_title,get_news_image,get_news_text 每個函數返回 - 標題,圖像或全文文本。 現在它是設置這樣的:
function get_news_title($id) {
$sql = $this->conn->prepare("SELECT title from news WHERE id = :id");
$sql->bindparam(":id", $id);
$sql->execute();
$row=$sql->fetch(PDO::FETCH_ASSOC);
$title = $row["title"];
}
function get_news_image($id) {
$sql = $this->conn->prepare("SELECT img from news WHERE id = :id");
$sql->bindparam(":id", $id);
$sql->execute();
$row=$sql->fetch(PDO::FETCH_ASSOC);
$img = $row["img"];
}
function get_news_text($id) {
$sql = $this->conn->prepare("SELECT full_text from news WHERE id = :id");
$sql->bindparam(":id", $id);
$sql->execute();
$row=$sql->fetch(PDO::FETCH_ASSOC);
$text = $row["full_text"];
}
每個函數包含查詢,但有可能是更好的辦法?在每一個函數中使用查詢是一種好的做法嗎?因爲如果我調用所有這些函數,則會有三個單獨的查詢運行。
而且它是使用這樣的一個好主意:如果你要堅持你的方法,你一定是$領域僅由你掌控
function get_news($id,$field) {
$sql = $this->conn->prepare("SELECT :field from news WHERE id = :id");
$sql->bindparam(":id", $id);
$sql->bindparam(":field", $field);
$sql->execute();
$row=$sql->fetch(PDO::FETCH_ASSOC);
$title = $row["title"];
}
您不能使用列名稱的參數。原因:如果數據庫不知道它應該使用的列或表等,那麼將如何編譯,優化查詢並創建執行計劃 – RiggsFolly
爲什麼沒有一個函數執行的查詢可以將所有3列合爲一個去'從新聞選擇標題,新聞,full_text WHERE ID =:ID' – RiggsFolly
@RiggsFolly我可以做到這一點,但爲了學習的目的,我這樣做。有沒有辦法在一個函數中執行查詢,然後從查詢中調用其他字段? – ChrisX32