我想将具有匹配id的所有行保存到数组但是我无法使其正常工作。我需要添加什么?
public function getProjects($db1) {
$id= $this->getId($db1);
$projects = $db1->getResult(
sprintf(
"SELECT * FROM projects WHERE id =1"
)
);
return $projects;
}
所以项目只返回我数据库中的第一项,而不是全部。
是的,我见过类似的问题但是这些选项对我来说不起作用,因为我使用的是PHP7,或者它与sprintf有关。 谁可以帮忙?
答案 0 :(得分:3)
通过以下链接查看php中sprintf()的用法:http://www.w3schools.com/php/func_string_sprintf.asp
答案 1 :(得分:3)
所以,让我直截了当地说:
您希望从数据库中获取结果,然后按ID 对结果进行分组,即构建一个聚合具有相同ID的所有行的数组即可。我是对的吗?
如果是这样,你可以这样做(例子):
$projects = [];
$projects[] = ["id" => 1, "name" => "project1"];
$projects[] = ["id" => 2, "name" => "project2"];
$projects[] = ["id" => 1, "name" => "project11"];
$projects[] = ["id" => 2, "name" => "project22"];
$projectsById = [];
foreach($projects as $project) {
if(!isset($projectsById[$project['id']]))
$projectsById[$project['id']] = [];
$projectsById[$project['id']][] = $project;
}
var_dump($projectsById);
快速解释:
$projectsById[$project['id']] = [];
$projectsById[$project['id']][] = $project;
您可以查看结果并在此处使用代码:http://ideone.com/AcoLIQ
答案 2 :(得分:1)
在我的情况下,它是sitecomposer中的一个函数,旨在仅返回一个值(语句成功的第一行)。