繁体   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