如何从 While 语句中获取多个变量?
How to get multiple variables from a While Statement?
我需要从 Mysql 数据库中获取 1 到 3 个标签。然后我想将每个标签分配给一个变量。有人知道我该怎么做吗?这是代码
$findTag1= "SELECT tagid FROM entitytag WHERE audioid = '$audioid'";
$findTag1Result = $link->query($findTag1);
if ($findTag1Result->num_rows >= 0) {
while($row = $findTag1Result->fetch_assoc()) {
//Assign each tag to a variable
}
}
这可行,但不确定您将如何设法预测您将拥有的变量数量,我仍然更喜欢坚持使用数组而不将其内容提取到变量中。
/// assign inside while loop
$tags[] = $row->tag;
// use variables outside the loop
list($tag1, $tag2, $tag3) = $tags;
将结果放入关联数组
$array = [];
$i = 1;
while($row=findTag1Result->fetch_assoc()) {
$array['tag' . $i] = $row;
$i++;
}
然后使用 extract 获取变量。
extract($array);
如果您使用的是 mysqli,那么您可以使用 fetch_all()
和 array_column()
来完成此操作。这将生成一个数组,其中每个元素都是来自您的数据库的标签。如果你使用PDO会容易得多,我强烈建议在不晚的情况下进行切换。
要使用 mysqli 执行此操作,您可以这样做:
$stmt = $mysqli->prepare(
'SELECT tagid
FROM entitytag
WHERE audioid = ?
ORDER BY tagid
LIMIT 3'
);
$stmt->bind_param('s', $audioid);
$stmt->execute();
$tags = array_column($stmt->get_result()->fetch_all(), 0);
// Either loop on all 3 tags assigning each to a variable
foreach ($tags as $tag) {
echo $tag;
}
// or access each one via its index. 0 = first tag, 1 = second tag, 2 = third tag
echo $tags[1] ?? 'No tag!';
您可以通过在数组上循环或使用数字索引来访问数组变量中的元素。如果您决定使用索引,请确保提供默认值,以防数组中的标签少于 3 个。使用 ?? 'default'
语法。
我需要从 Mysql 数据库中获取 1 到 3 个标签。然后我想将每个标签分配给一个变量。有人知道我该怎么做吗?这是代码
$findTag1= "SELECT tagid FROM entitytag WHERE audioid = '$audioid'";
$findTag1Result = $link->query($findTag1);
if ($findTag1Result->num_rows >= 0) {
while($row = $findTag1Result->fetch_assoc()) {
//Assign each tag to a variable
}
}
这可行,但不确定您将如何设法预测您将拥有的变量数量,我仍然更喜欢坚持使用数组而不将其内容提取到变量中。
/// assign inside while loop
$tags[] = $row->tag;
// use variables outside the loop
list($tag1, $tag2, $tag3) = $tags;
将结果放入关联数组
$array = [];
$i = 1;
while($row=findTag1Result->fetch_assoc()) {
$array['tag' . $i] = $row;
$i++;
}
然后使用 extract 获取变量。
extract($array);
如果您使用的是 mysqli,那么您可以使用 fetch_all()
和 array_column()
来完成此操作。这将生成一个数组,其中每个元素都是来自您的数据库的标签。如果你使用PDO会容易得多,我强烈建议在不晚的情况下进行切换。
要使用 mysqli 执行此操作,您可以这样做:
$stmt = $mysqli->prepare(
'SELECT tagid
FROM entitytag
WHERE audioid = ?
ORDER BY tagid
LIMIT 3'
);
$stmt->bind_param('s', $audioid);
$stmt->execute();
$tags = array_column($stmt->get_result()->fetch_all(), 0);
// Either loop on all 3 tags assigning each to a variable
foreach ($tags as $tag) {
echo $tag;
}
// or access each one via its index. 0 = first tag, 1 = second tag, 2 = third tag
echo $tags[1] ?? 'No tag!';
您可以通过在数组上循环或使用数字索引来访问数组变量中的元素。如果您决定使用索引,请确保提供默认值,以防数组中的标签少于 3 个。使用 ?? 'default'
语法。