我有两张桌子,我称之为keylabel:key1 : valuelabel:value1
keylabel:key2 : valuelabel:value2
和foo
。每个表分别有一个主键bar
和foo_id
。 bar_id
中的每一行都可以是一个组的一部分,这是foo
中的一行 - 认为委员会成员,每个成员可以在多个委员会,每个委员会可以有多个成员。我有一个可以称为bar
的连接表,它只有两列(其中一列用于其他两个表的主键)和列表foo是哪一个栏的一部分:
foo_bar
这是我的PHP(由于我的webhost,我无法使用| foo_id | bar_id |
| ------ | ------ |
| test | res |
| test | res2 |
| --------------- |
):
$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();
给了我“res”。我怎样才能使我的结果成为$result
foo所属的所有条形图?
SQL小提琴: http://sqlfiddle.com/#!9/2dfd2/1
答案 0 :(得分:0)
您可以使用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”的所有条形ID。
答案 1 :(得分:0)
每个$ 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);