繁体   English   中英

如何在键为常数的情况下选择多个键/值对?

[英]How to SELECT multiple key/value pairs where the key is constant?

我有两个表,我将它们称为foobar 每个表都有一个主键foo_idbar_id 中的每行foo可以是一个基团,其是在一排的一部分bar -想上的委员会成员,每个成员可以在多个委员会和每个委员会可以有多个成员。 我有一个联接表,可以称为foo_bar ,它只有两列(每列一列为其他两个表的主键),并列出了哪个foo是哪个bar的一部分:

| foo_id | bar_id |
| ------ | ------ |
|   test |    res |
|   test |   res2 |
| --------------- |

这是我的PHP(由于我的虚拟主机,我无法使用$stmt->get_result() ):

$stmt = $db->prepare("SELECT bar_id FROM foo_bar WHERE foo_id = ?");

$stmt->bind_param("s", "test");
$stmt->execute();
$stmt->bind_result($result);
$stmt->fetch();
$stmt->close();

现在,打印$result给我“ res”。 如何使结果成为test foo所属的所有条形?

SQL小提琴: http ://sqlfiddle.com/#!9 / 2dfd2 / 1

您可以使用mysqli这样的东西:

$mysqli = new MySQLi(SERVER, USERNAME, PASSWORD, DATABASE);  

$query = $mysqli->query("SELECT bar_id FROM foo_bar WHERE foo_id = 'test'");

  while ($row = $query->fetch_assoc()) {
                $results[] = $row;
            }

$results将具有foo id等于“ test”的所有bar ID。

您正在为每个$ stmt-fetch()的调用绑定参数;

再次调用$ stmt-> fetch()(在$ stmt-> close()之前),$ result将为“ res2”

您可以循环执行此操作,并将所有$ result放入一个数组中。

或者,您可以

$result = $stmt->get_result();
$rows = $result->fetch_all(MYSQLI_ASSOC); 

然后$ rows将作为关联数组来自查询的所有结果行。 然后可以将其映射到数组

function getBarID($row) {
  return $row["bar_id"];
}

$bar_ids = array_map("getBarID",$rows);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM