gpt4 book ai didi

php - 通过 PHP 获取多对多 MYSQL 关系的另一端时遇到问题

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

编辑:DevlshOne 解决了重复问题,但我仍然得到奇怪的数组结果。

如果这个问题被提出并得到回答,我深表歉意。我使用了网站搜索、Google,并观看了一些 YouTube 视频,但我没有找到任何足够基本的内容来将其应用到我的上下文中。

基本上我有三个表:tool、metal 和 tool_contains_metal,当然后者是多对多表。 (我知道这些都是奇怪的例子,但我正在尝试构建一个简单的项目来学习数据库绳索)

|----tool ----|
id | name | use

|- tool_contains_metal -|
tool_id | metal_id

.

|-- metal -- |
id | name

我想使用 PHP 查询数据库并返回任何给定工具中包含的金属。

当然,我有一个工具类和一个金属类,到目前为止我的策略是在金属类中创建一个函数来查询数据库并返回结果。

这是我目前的查询,是在阅读各种帮助文件后拼凑而成的。

SELECT metal.id, metal.name FROM metal
INNER JOIN tool_contains_metal tool_contains ON metal.id = tool_contains.metal_id
INNER JOIN tool ON tool_contains.tool_id =1

目前 1 是硬编码的,因为我知道 id 为 1 的工具应该与两种不同的金属相关联。

当我在 PHPMyadmin 上运行该查询时,它返回两行...但它重复它们 12 次,总共 24 个结果。我想我只是在语法上有问题。 谢谢 DevlshOne! 但为了完整起见,我将包含我的函数。.

public static function find_metals_in_tool($toolId){
global $database;
$sql = "SELECT metal.id, metal.name FROM metal
INNER JOIN tool_contains_metal tool_contains ON metal.id = tool_contains.metal_id
INNER JOIN tool ON tool_contains.tool_id =1";

$result_set = $database->query($sql);
$result_array = mysqli_fetch_array($result_set);
return $result_array;
}

当我 print_r($result_array) 时,它显示一行: 数组 ( [0] => 1 [id] => 1 [1] => 钢 [name] => 钢 )这似乎不是我想要的。这个特定工具至少应该有两个结果。另一个奇怪的是,当我运行 echo count($result_array) 时,它显示 4。

无论如何,希望这不是太罗嗦,但我认为更多的信息总比太少的信息好。

我真的很感谢任何人能给我的任何提示/指示。

最佳答案

我认为您需要迭代结果,试试这个:

$result_set = $database->query($sql);
$return = array();
while($result_array = mysqli_fetch_array($result_set)){
$return[] = $result_array;
}
return $return;

引用:

Returns an array of strings that corresponds to the fetched row or NULL if there are no more rows in resultset.

http://www.php.net/manual/en/mysqli-result.fetch-array.php

关于php - 通过 PHP 获取多对多 MYSQL 关系的另一端时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184454/

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