我想创建一个输入为两个数组的函数。一个用于字段,一个用于表。
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循环获取我想要的输出。但我正在寻找一位更专业的人才。处理这个问题的方法,从中学习。
答案 0 :(得分:2)
您可以使用implode()
创建包含数组所有元素的字符串,而不是遍历整个数组:
$ieldsString = implode(',' , $fields);
答案 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 - 查询
如果它不是你想要的,我很抱歉。
祝你好运!