我想创建一个函数,其中输入是两个数组。一个用于字段,一个用于表。
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
如果这不是你想要的,我很抱歉。
祝你好运!