循环数据库查询的结果

时间:2012-05-14 18:36:31

标签: mysql database arrays loops pdo


标题可能有点误导,我无法想出更好的东西。

我有这个小小的函数,允许其他人基本上在一行中执行选择查询,他们会在函数的参数中传递数组中的where critieria。
该函数将准备查询(预处理语句),然后执行它,将结果返回到数组中。

因此循环必须在函数外部完成,以显示结果而不是内部。 我的问题是什么是一个很好的方法。我可以使用foreach,但它一团糟,并显示两次,并不是显示数据库结果的方式。当我这样做时,while循环会触发无限循环

while($foo = $result){}

$ result是数组。

这是我的功能

    <?php

$array = array("id" => 3);
$operator = "AND";


function fetch_stuff($table, $where, $operator){
    $counter = 0;
    $params = null;
    $param_vals = null;
    $count = count($where);
    $query = "SELECT * FROM $table";
    if($where != null){
        $query .=" WHERE ";
        foreach($where as $value){
            $counter++;
            $output = array_search($value, $where);
            $query .= "$output = :$output ";
            if($count > 1){ 
                if($counter > $count){

                } else {
                    $query .="$operator ";
                }
            }

        }
    }

    //Database settings, please edit them
    $dbh = new PDO('mysql:dbname=freelance; host=localhost', 'root', '********');
    $statement = $dbh->prepare($query);

    foreach($where as $value){
        $output = array_search($value, $where); 
        $statement->bindParam(":$output", $value);
    }
    $statement->execute();
    $result = $statement->fetch();
    return $result;
}

$result = fetch_stuff('news', $array, $operator);

如果我得到一些关于最佳方法的建议,我会非常感激:) 感谢。

0 个答案:

没有答案