在foreach方法中清空PDO数据库查询的结果

时间:2017-04-14 05:27:54

标签: php html mysql oop

我试图创建一个方法,可以使用任意数量的参数/参数。第一个也是唯一必需的参数包含数据库查询的值。传递的附加参数与表中的列匹配。 然后应在foreach循环内使用参数,以通过作为参数传递的查询和列名从数据库中检索数据。为此,我使用PHP函数中的func_get_args()构建...

这是一个例子

class Crud{
    public $results;

 function selectAllJobs(){
        $sql="SELECT * from jobs";
        $stmnt = $db->prepare($sql);
        $stmnt->execute();
        return $stmnt->fetchAll();
    }

function displayResults($results){
        $this->results = $results;
        $numargs = func_num_args();
        echo "Number of arguments: $numargs \n";

        $arg_list = func_get_args();

        foreach ($results as $index=> $result) {
           echo $currentParam = $arg_list[$index];
             echo $result[$currentParam];
             echo'<br />';
        }

$obj = new Crud();
$results = $obj->selectAllJobs();
$obj->displayResults($results, 'location', 'description', 'headline');

类中的方法的想法是,您可以通过简单地调用方法轻松查询数据库,然后通过简单地调用方法displayResults()来轻松显示查询结果希望有意义。 ..任何帮助/建议表示赞赏。

表格

enter image description here

1 个答案:

答案 0 :(得分:1)

您将4个参数作为参数传递给$results而不是3个参数,这会打破您的displayResults()循环,因为您的第一个索引不是foreach希望,但是'location'。您可以$results看到自己。

您不需要在print_r($arg_list)返回$stmt->fetchAll()并再次转入selectAllJobs()。通过将结果分配给displayResults(),可以将结果保留在类(和私有)中。

您还需要两个$this-results循环,一个用于循环遍历foreach,另一个用于循环遍历$this-results。所以这是代码:

$arg_list