簡體   English   中英

將 SQL 查詢放入 PHP function

[英]Putting a SQL query in a PHP function

我有幾個要在單個頁面上運行的查詢。 我顯然不想將實際查詢放在我的模板文件中,所以我我想做的是構造一個 function 並在我希望查詢結果顯示的任何地方調用它。 正確的?

因此,例如,我將在側邊欄中添加 <? <?php sidebar_query()?> <?php footer_query()?>等。

所以,我只是制作了一個名為functions.php的文件,是否包含 PHP 並在其中放入類似的內容?

<?php
    function sidebar_query(){
        $query = ("SELECT sidebarposts FROM table;");
    return $query;
}
?>

還是您使用echo而不返回任何內容?

<?php
    function sidebar_query(){
        $query = ("SELECT sidebarposts FROM table;");
        echo $query;
}
?>

沿着完全相同的路線,我想計算返回的結果,並顯示“有 X 個帖子返回”。 下方留言。 似乎把它放在 function 中也有意義嗎? 我將如何制作一個可以用於每個查詢的“通用” function?

<?php
    function number_of_results(){
        $num_rows = mysql_num_rows();
        echo $num_rows;
}
?>

如果有人能給我我應該在這里努力實現的目標的理論要點,我將不勝感激。

感謝您幫助初學者。

特里

我想我明白你的意思。

像這樣返回值



    function sidebar_query(){
        $rValue = "";
        $query = ("SELECT sidebarposts FROM table;");
        $result = mysql_query($query);
        if ($row = mysql_fetch_array($result)){
            $rValue = $row['sidebarposts'];
        }
    return $rValue;
    }

現在你可以回顯 sidebar_query(); 或者你想用它做什么。

通過執行("SELECT sidebarposts FROM table;")您實際上並沒有做任何事情,您只是將字符串存儲為變量。

一個簡單的例子是

function sidebar_query()
{
    $query = mysql_query("SELECT title,post FROM table;"); //query the db
    $resArr = array(); //create the result array

    while($row = mysql_fetch_assoc($query)) { //loop the rows returned from db
        $resArr[] = $row; //add row to array
    }

    return $resArr;   
}

然后使用它你可以做

$sideBarPosts = sidebar_query(); //get the result array

foreach($sideBarPosts as $post) { //loop the array
    echo '<h1>'. $post['title']. '</h1>';
    echo '<p>'. $post['post']. '</p>';
}

編輯 我看到你想讓 function 直接打印它,如果你願意,你可以這樣做而不是返回數組。

   function sidebar_query(){
    $query = mysql_query("SELECT * FROM table;");
    $result = $conn->query($query);
    $resArr = array(); //create the result array

    while($row = $result->fetch_assoc()) { //loop the rows returned from db
      $resArr[] = $row; //add row to array
    }
    return $resArr;   
    }

然后:

    $sideBarPosts = sidebar_query(); //get the result array

    foreach($sideBarPosts as $post) { //loop the array
      echo '<h1>'. $post['title']. '</h1>';
      echo '<p>'. $post['post']. '</p>';
    }

// 設置與數據庫的連接

$conn = mysql_pconnect($servername,$username,$password) or die("Can not Connect MySql Server!");

// Select 要使用的數據庫

mysql_select_db($databasename,$conn) or die("Can not select Data Base!");

// When you want to query SQL inside php function, you need to pass connection($conn) to the function as below.

function sidebar_query($condb)
   {
     $strSql = "SELECT sidebarposts FROM table";
     $result = mysql_query($strSql,$condb);
     return $result;
   }

// 調用 function

 sidebar_query($conn);

當我在我的網頁上使用時,這對我有用。

盡管在這種情況下,我認為沒有足夠的額外邏輯來保證將其包裝在 function 中。 我可能會直接在我的模板中執行此操作。

像這樣有用的一個很好的例子是,如果你想做“用文字表達的時間”功能,比如“昨天”或“10 分鍾前”,那么你可以傳入時間,計算要使用的字符串,格式化它

您需要像這樣將數據庫連接名稱傳遞給 function,

您已經有一個連接名稱,我的是 $connect_name

$connect_name= mysql_connect( 'host', 'user', 'password');

function getname($user,$db){
    $data= mysql_query("SELECT $user...", $db);
    //your codes
    //return bla bla
}

echo getname("matasoy",$connect_name);

這對我有用。

我也將它用於medoo.min sql 系統。 您可以將 medoo 與這樣的功能一起使用;

function randevu($tarih,$saat,$db){

    $saat_varmi = $db->count("randevu",array("AND"=>array("tarih"=>$tarih,"saat"=>$saat)));

    if($saat_varmi>0)
        return 3;
    else
        return 2;               
}

祝你有美好的一天, Murat ATASOY

閱讀 php 文檔,了解如何運行 mysql 查詢。

Yay的,您有查詢,現在您需要對其進行處理:

mysql_query($query); 例如可能對你有用:-)

你想運行查詢並以你想在模板中使用的任何格式返回結果。所以對於你想返回 integer 的原始數字,對於側邊欄帖子返回一個帖子數組或 mysql 結果。

你應該做“'有 X 個帖子返回。' " 完全不同的 function 可以傳入 integer 一個可選字符串。 這樣你就可以將它重用於大量的東西:例如:

function format_nb_records($nb_records, $format = 'There were %s posts returned!'){
   return sprintf($format, $nb_records);
}

盡管在這種情況下,我認為沒有足夠的額外邏輯來保證將其包裝在 function 中。 我可能會直接在我的模板中執行此操作。

像這樣有用的一個很好的例子是,如果你想做“用文字表達的時間”功能,比如“昨天”或“10 分鍾前”,那么你可以傳入時間,計算要使用的字符串,格式化並返回它.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM