在2个不同的php函数中调用MySql Select Query

时间:2015-07-07 16:43:30

标签: php mysql

请帮助我解决我的问题..我可以调用一次Mysql选择查询来自两个不同功能的不同功能...抱歉我不知道如何解释..但在我的样本下面我想要存档。

我想对2个函数使用单个查询..所以也许我必须编写如下代码?

function sqlSelect ($db, $id, $id2) {
   $sql = mysqli_query($db, "SELECT * FROM xxx WHERE id='$id' AND id2='$id2'");
   $row = mysqli_num_rows($sql);
   $field = mysqli_fetch_object($sql);

   return $row;

}

但如何在2 diff函数中使用$ field?

function aaa ($a,$b,$c) {
   if($row >= 1){
      //Do something with $a $b and $c
      //$reget field with $field['column'];
      $field['column']; //???
   }

   return $result;
}

function bbb ($a,$b,$c) {
   if($row >= 1){
      //Do something with $a $b and $c
      //get field with $field['column'];
      $field['column']; //???
   }
}

我现在所做的是

function aaa ($db,$id,$id2,$a,$b,$c) {
   $sql = mysqli_query($db, "SELECT * FROM xxx WHERE id='$id' AND id2='$id2'");
   $row = mysqli_num_rows($sql);
   $field = mysqli_fetch_object($sql);

   if($row >= 1){
      //Do something with $a $b and $c
      //get field with $field['column'];
   }
}

function bbb ($db,$id,$id2,$a,$b,$c) {
   $sql = mysqli_query($db, "SELECT * FROM xxx WHERE id='$id' AND id2='$id2'");
   $row = mysqli_num_rows($sql);
   $field = mysqli_fetch_object($sql);

   if($row >= 1){
      //Do something with $a $b and $c
      //get field with $field['column'];
   }
}

但如果我现在使用我编写的代码和代码,我认为必须两次调用相同的查询。我不能使用查询外部函数,所以我必须在每个函数上编写查询,但我想只写一次查询,可以在两个不同的函数中使用..

抱歉愚蠢的解释..

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

一个实现可以通过将数组作为参数传递,

<?php
$arg['db']="database";
$arg['tabe']="table";
$arg['search']['id1']="id1";
$arg['search']['id2']="id2";
$arg['do_something']['a']="a";
$arg['do_something']['b']="b";
$arg['do_something']['c']="c";
function searchAndDoSomethingAndReturnResult($arg)
{
    $return = NULL;
    $query="SELECT * FROM ".$arg['table'];
    $flag=false;
    foreach($arg['search'] as $key=>$value)
    {
        if($flag)
            $query.=" AND ";
        else
            $flag=true;
        $query.= $key." = '".$value."' ";
    }
    $row = mysqli_num_rows($query);
    $field = mysqli_fetch_object($query);
    if($row >= 1)
    {
        foreach($arg['do_something'] as $job=>$value)
        {
            // $return[] = "some result"
            // do something 
        }
    }
    return $return;
}
?>

让我知道这是否可以解决您的问题

答案 1 :(得分:0)

您可以将$field变量作为函数参数传递

<?
$field = ...;
function sql1($field,...,...){
    // Use $field here
}
function sql2($field,...,...){
    // Use $field here
}
?>

或者,您可以使用global关键字从函数外部访问变量

<?
$field = ...;
function sql1(){
    global $field;
    // Use $field here
}
function sql2(){
    global $field;
    // Use $field here
}
?>