![](/img/trans.png)
[英]PHP key value pairs, where key is a dynamic variable and value is an array?
[英]How to SELECT multiple key/value pairs where the key is constant?
我有两个表,我将它们称为foo
和bar
。 每个表都有一个主键foo_id
和bar_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.