Php 在foreach方法内清空PDO DB查询的结果
我正在尝试创建一个方法,它可以接受任意数量的参数。第一个也是唯一必需的参数包含数据库查询的值。传递的附加参数与表中的列匹配。 然后,应在foreach循环中使用参数,通过作为参数传递的查询和列名从数据库检索数据。为此,我使用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";
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()
数组循环显示结果的地方…希望有意义。