mysqli用数组参数选择函数

时间:2014-08-03 19:06:40

标签: php mysqli

我想创建一个输入为两个数组的函数。一个用于字段,一个用于表。

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循环获取我想要的输出。但我正在寻找一位更专业的人才。处理这个问题的方法,从中学习。

2 个答案:

答案 0 :(得分:2)

您可以使用implode()创建包含数组所有元素的字符串,而不是遍历整个数组:

$ieldsString = implode(',' , $fields);

http://php.net/manual/de/function.implode.php

答案 1 :(得分:1)

OOP方法:

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

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

这就是班级的样子:

<?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; 
    }
}
?>

这就是你的主要应该是这样的:

<?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 =&gt;的结果SELECT范围,距离,从北,南 你可以简单地添加到Mysqli - 查询

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

祝你好运!