gpt4 book ai didi

php - 将数组传递给函数以在 PP 中查询数据库

转载 作者:行者123 更新时间:2023-11-29 11:00:36 25 4
gpt4 key购买 nike

我想传递一个具有不同数量列名的数组和表来查询数据库。

public function get_list() {

$list = func_get_args();
$table = array_pop($list);
$fields = implode(', ', $list);

$sql = "SELECT $fields FROM $table";
$data = array();
try {
$dbi = db::getInstance();
$stmt = $dbi->data->prepare($sql);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$data[]=$row[$fields];
}
return $data;
}
catch(PDOException $ex) {
die($ex);
}
}

查询获取表和右侧列(如果只有一个列)。但是,如果数组包含多于一列,则会显示:

Undefined index: value1, value2

是否有一种有效的方法可以使用逗号分隔的字符串来查询多个列?

非常感谢!

最佳答案

不确定您要对循环中的 $fields 执行什么操作。您的查询将仅返回您指定的字段。所以你的代码将是:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$data[] = $row;
}

但是这里有两种方法可以获取您所显示的数据。只需在循环中赋值即可:

while ($data[] = $stmt->fetch(PDO::FETCH_ASSOC)) {}

或者使用函数来获取所有行:

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

但是,如果我要采用这种方法,我会将表和字段(作为数组)作为指定参数传递:

public function get_list($table, $fields)

要将函数外部的结果与动态字段一起使用,您需要循环 $rows 来获取它们:

foreach ($this->model->get_list($fields, $table) as $row) {
foreach ($row as $field => $value) {
echo "$field contains $value";
}
}

关于php - 将数组传递给函数以在 PP 中查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com