如果我从 SQL 收集多行数据,我将不得不使用 foreach 循环或其他方法来正确显示该数据。如何在不使用 foreach 循环的情况下使用这些 PHP 字符串?以下是我的 SQL 查询$results = $mysqli->query('SELECT * FROM specs where id in ('.$id1.','.$id2.','.$id3.','.$id4.') ');它将产生来自 4 个不同行的数据。上面的代码只是一个示例,下面是我在页面中使用的确切代码。try{ $pdo = new PDO("mysql:host=localhost;dbname=databse", "user", "password"); // Set the PDO error mode to exception $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);} catch(PDOException $e){ die("ERROR: Could not connect. " . $e->getMessage());} // Attempt select query executiontry{ $sql = "SELECT * FROM specs WHERE id IN($id1,$id2,$id3,$id4)"; $result = $pdo->query($sql); $results = $result->fetchAll();} catch(PDOException $e){ die("ERROR: Could not able to execute $sql. " . $e->getMessage());} // Close connectionunset($pdo);目前,数据使用以下方式显示<tr><td>Brand</td><?php foreach ($results as $result){ ?> <td> <strong><?php echo $result['brand']; ?></strong> </td><?php } ?></tr>总共会有 4 个结果,我想分别使用这 4 个结果。如果结果是 Samsung、Sony、Apple、LG - 我如何仅使用 PHP 字符串来回显“Apple”?
1 回答
森栏
TA贡献1810条经验 获得超5个赞
获取所有行。如果您有MySQL 本机驱动程序:
$rows = $results->fetch_all(MYSQLI_ASSOC);
否则,使用循环获取:
while($rows[] = $results->fetch_assoc());
然后你可以按行访问它们:
echo $rows[0]['brand']; // first row
echo $rows[1]['brand']; // second row
但这不是很有用。如果您想要使用一些独特的东西(我使用brand作为示例,尽管它可能不是),那么只需对其进行索引:
$rows = array_column($results->fetch_all(MYSQLI_ASSOC), null, 'brand');
// or
while($row = $results->fetch_assoc()) { $rows[$row['brand']] = $row; }
// then
echo $rows['apple']['model'];
- 1 回答
- 0 关注
- 68 浏览
添加回答
举报
0/150
提交
取消