Php 在foreach方法内清空PDO DB查询的结果

Php 在foreach方法内清空PDO DB查询的结果,php,html,mysql,oop,Php,Html,Mysql,Oop,我正在尝试创建一个方法,它可以接受任意数量的参数。第一个也是唯一必需的参数包含数据库查询的值。传递的附加参数与表中的列匹配。 然后,应在foreach循环中使用参数,通过作为参数传递的查询和列名从数据库检索数据。为此,我使用func\u get\u args()内置PHP函数 这里有一个例子 class Crud{ public $results; function selectAllJobs(){ $sql="SELECT * from jobs";

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

这里有一个例子

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');
类积垢{
公开的结果;
函数selectAllJobs(){
$sql=“从作业中选择*”;
$stmnt=$db->prepare($sql);
$stmnt->execute();
返回$stmnt->fetchAll();
}
函数显示结果($results){
$this->results=$results;
$numargs=func_num_args();
echo“参数数量:$numargs\n”;
$arg_list=func_get_args();
foreach($results作为$index=>$result){
echo$currentParam=$arg_列表[$index];
echo$result[$currentParam];
回声“
”; } $obj=新积垢(); $results=$obj->selectAllJobs(); $obj->displayResults($results,'location','description','headline');
类中的方法的思想是,您可以通过简单地调用该方法轻松地查询数据库,然后通过简单地调用方法
displayResults()
轻松地显示查询的结果,希望这是有意义的…任何帮助/建议都将不胜感激

表格


您将4个参数作为参数传入
$results
而不是3个参数,这将打破
foreach
循环,因为第一个索引不是您想要的
'location'
,而是
$results
。您可以
打印($arg\u list)
了解你自己

您不需要在
selectAllJobs()
返回
$stmt->fetchAll()
,然后再次传递到
displayResults()
。通过将结果分配给
$this results
,可以将结果保存在类中(和私有)

您还需要两个
foreach
循环,一个用于循环通过
$this results
,另一个用于循环通过
$arg\u list
。下面是代码:

class Crud
{
    private $results;
    private $db;

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

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

        $arg_list = func_get_args();

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

$obj = new Crud();
$obj->selectAllJobs();
$obj->displayResults('location', 'description', 'headline');
类积垢
{
私人基金的业绩;
私人$db;
函数selectAllJobs()
{
$sql=“从作业中选择*”;
$stmnt=$this->db->prepare($sql);
$stmnt->execute();
$this->results=$stmnt->fetchAll();
}
函数displayResults()
{
$numargs=func_num_args();
echo“参数数量:$numargs\n”;
$arg_list=func_get_args();
foreach($this->results as$result){
foreach($arg_列表为$index=>$value){
echo$结果[$索引];
回声“
”; } } } } $obj=新积垢(); $obj->selectAllJobs(); $obj->displayResults('location'、'description'、'headline');
您的问题是什么?@kunruh运行
displayResults()
时,我遇到未定义的字符串偏移错误。
selectAll()
方法应执行DB查询。将返回一个数组,该数组必须传递给
displayResult()
数组循环显示结果的地方…希望有意义。