mysql使用数组参数选择函数


mysqli select function with array parameters

我想创建一个函数,其中输入是两个数组。一个用于字段,一个用于表。

public function s($fields = array(), $tables = array()) { }

但我不知道如何从这里。我的想法是循环遍历两个数组,并将每个值保存为一个字符串,就像这样(但这对我来说不是最好的方法):

$length = count($fields);
$fieldsString = "";
for ($i = 0; $i < $length; $i++) {
    $fieldsString += $fields[$i];
}

然后对$tables做同样的事情,并将$fieldsString和$tablesString输出到SQL查询。

我的问题是:是否可以更有效地做到这一点?

编辑我知道如何使用for循环并得到我想要的输出。但是我想寻找一种更"专业"的方式来处理这个问题,从中吸取教训。

除了循环遍历整个数组,您还可以使用implode()创建一个包含数组所有元素的字符串:

$ieldsString = implode(',' , $fields);
http://php.net/manual/de/function.implode.php

OOP方法:

首先我要说的是,OOP不仅仅是代码中的一个类。这是一个概念,它允许我们在更大的范围内思考,并在我们的代码中创建更多的功能。

我创建了一个DBHandler类,它将处理我所有的DB请求,所以最好把它保存在一个单独的文件中,即使在更高层次的目录中。

类是这样的:

<?php
class DBHandler{
    public $dbCon;
    function __construct(mysqli $dbCon){
        $this->dbCon = $dbCon;
    }
    private function createQuery($parameters, $tables){
      $params = implode(',', $parameters);
      $tParam = implode(',',$tables);
    return "SELECT $params FROM $tParam";
    }

    public function query($dbCon, $parameters, $tables){
        $query = createQuery($parameters, $tables);
        $result =$this->dbCon->query($query);
        return $result; 
    }
}
?>

你的main应该是这样的:

<?php
$myownDB = new DBHandler($dbCon);
$myownDB->query($parameters, $tables);
?>

这样更容易维护。我真的建议你使用它。将数据库处理程序与实际代码分开比较容易,因此不会变得混乱。请注意,这个调用$myownDB->query($parameters, $tables);将立即运行查询,而不会执行echo

过程编程:

<?php
function s($parameters){
    $i = 0;
    $addtoQuery ='';
    for($i =0; $i<count($parameters); $i++){
        $addtoQuery .= $parameters[$i].',';     
    }
    return  substr($addtoQuery, 0, -1);

}
function t($tables){
    $i = 0;
    $addtoQuery ='';
    for($i =0; $i<count($tables); $i++){
        $addtoQuery .= $tables[$i].',';     
    }
    return  substr($addtoQuery, 0, -1);
}
$parameters = array("range", "distance", "which");
$tables = array("north", "south");
$s = s($parameters);
$t = t($tables);
function createQuery($s, $t){
    $query = "SELECT $s FROM $t";
    return $query;
}
echo createQuery($s,$t);
?>

echo => SELECT range,distance,其中FROM north,south您可以简单地将其添加到Mysqli - Query

如果这不是你想要的,我很抱歉。

祝你好运!

相关文章: